0

この質問が何度も寄せられていることは知っていますが、どの回答も私の問題を解決していません。まず最初に、setFlash と echo $this->Session->flash() がある場所を示しましょう。

これは私の追加機能です:

if(!empty($this->request->data))
    {
        $friend_id = $this->request->data['User']['id'];
        $user_id = $this->Auth->User('id');
        $already_friends = $this->Group->findByIdAndFriend($user_id, $friend_id);
        if($already_friends)
        {
            $this->Session->setFlash(__('You are already friends', true));
        }
        else
        {
            $this->Group->create();
            $data = array($user_id, $friend_id);
            if($this->Group->save($data))
            {
                $this->Session->setFlash(__('You are now friends', true));
            }
            else {
                $this->Session->setFlash(__('Failed to add friend. Please try again', true));
            }               
        }
        $this->redirect(array('action' => 'index'));

これは私のレイアウトであり、その必要な部分です:

    <div id="header">
            <?php echo $this->Html->image('connect.jpg', array('alt' => 'My Image', 'id' => 'headerImage')) ?>
            <div id="headerNavMenu">
                <div name="navTab" class="menuTab">
                    <?php echo $this->Html->link('Me', array('controller' => 'users', 'action' => 'view', CakeSession::read("Auth.User.id")), array('class' => 'tabName')) ?>                        
                </div>
                <div name="navTab" class="menuTab">
                    <?php echo $this->Html->link('My Schedule', array('controller' => 'newSchedules', 'action' => 'index'), array('class' => 'tabName')) ?>
                </div>
                <div name="navTab" class="menuTab">
                    <?php echo $this->Html->link('My Group', array('controller' => 'groups', 'action' => 'index'), array('class' => 'tabName')) ?>
                </div>
                <div name="navTab" class="menuTab">
                    <a href="#" class="tabName">Settings</a>
                </div>
            </div>
            <div id="login">
                <?php echo CakeSession::read("Auth.User.firstName").' '.CakeSession::read("Auth.User.lastName").' '  ?>
                <?php echo $this->Html->link('logout', array('controller' => 'users', 'action' => 'logout')) ?>
            </div>
        </div>
        <div id="mainContent">
            <?php echo $this->Session->flash(); ?>
            <?php echo $this->Session->flash('auth'); ?>
            <?php echo $this->fetch('content') ?>
        </div>
    </div>

フラッシュ メッセージが表示されないという事実に加えて、特定のメッセージも表示されないため、モデルの検証基準がチェックされていないようです。

私は CakePHP の初心者ですが、ブログのチュートリアルに従ってほとんどの作業を行っています。以前はフラッシュメッセージが機能していましたが、以前は機能していたモデルでも機能しなくなりました。

ここに私の検証があります:

public $validate = array(
    'first_name' => array(
        'required' => array(
            'rule' => array('notempty'),
            'message' => 'First Name cannot be blank',
            'allowEmpty' => false,
            'required' => true
        )
    ),
    'last_name' => array(
        'required' => array(
            'rule' => array('notempty'),
            'message' => 'Last Name cannot be blank',
            'allowEmpty' => false,
            'required' => true
        )
    ),
    'email' => array(
        'required' => array(
            'rule' => array('notEmpty'),
            'message' => 'Email cannot be blank',
            'allowEmpty' => false,
            'required' => true
        ),
        'valid' => array(
            'rule' => array('email', true),          
            'message' => 'This is not a valid email',
            'required' => true
        ),
        'unique' => array(
            'rule' => array('isUnique'),
            'message' => 'This email already exists',
            'required' => true
        )
    ),
    'password' => array(
        'required' => array(
            'rule' => array('notempty'),
            'message' => 'Password cannot be blank',
            'allowEmpty' => false,
            'required' => true
        ),
        'valid' => array(
            'rule' => array('minlength', 6),
            'message' => 'Password has to be at least 6 characters',
            'required' => true
        ),
        'password_has_to_be_alphanumeric' => array(
            'rule' => 'alphanumeric',
            'message' => 'Password has to be alphanumeric',
            'required' => true
        )
    )
);
4

1 に答える 1

0

コメントを追加できないので回答しなければなりませんが、 add 関数の 4 行目で user を小文字で記述する必要があります $this->Auth->user('id');。AppController の $components 配列に Session コンポーネントが追加されていることを確認するテーマ

于 2012-11-28T07:57:57.133 に答える