0

这是我的控制器代码

<?php
public function view(){
        $this->loadModel('User');
        $this->loadModel('Claim');
        $this->Claim->unbindModel(
            array('belongsTo' => array('User',"Category"),
                'hasMany' => array('Response')));
        $user= $this->User->findById($this->params['id']);
        $claim=$this->Claim->find('all', array(
                        'conditions' => array('user_id' => $user['User']['id']),
                        'fields' => array('title','id','support_count','oppose_count','description','category_id')));

        if(isset($user['User'])):
        $this->set('User',$user);
        else:
        $this->Session->setFlash('User Not Found!', 'flash',array('alert'=>'error'));
        $this->redirect('/');
        endif;

    }?>

这是我的模型代码

class User extends AppModel {

    public $name = 'User';

    public $validate = array(
        'handle' => array(
            'alphaNumeric' => array(
                'rule' => 'alphaNumeric',
                'required' => true,
                'message' => 'Invalid Username'
            ),
            'between' => array(
                'rule' => array('between', 5, 15),
                'message' => 'Username should be between 5 to 15 characters'
            )),
        'password' => array(
            'rule' => array('between', 5, 15),
            'message' => 'Password should be between 5 to 15 characters',
            'last' => true,
            'required' => true
        ),
        'email' => array(
            'email' => array(
                'rule' => 'email',
                'required' => true,
                'message' => 'Enter valid email address'
            )
        )
    ); }

这是查看代码

<?php echo $this->Html->link($Claim['Claim']['title'], 
            array('Controller'=>'User','action'=>'view')); ?>

我收到此错误“未定义变量:Claim [APP/View/User/view.ctp,第 6 行]”我试图在模型中将“claim”定义为 public $name = 'Claim'; 但它不起作用我试图将它定义为 $this->set($claim('Claim')); 但我仍然遇到同样的错误......我需要一些帮助,谁能帮我解决这个问题

4

1 回答 1

0

正如 Nunser 所说,您需要在控制器中使用 $this->set('Claim', $claim) 在视图中设置变量 $Claim。模型从数据库中获取数据。然后将其传递给控制器​​,您可以通过 $this->MODELNAME->METHOD 访问它。在这里处理数据。最终控制器(而不是模型)将其传递给视图。所以需要在Controller中进行设置。

另外:如果您要遵循 CakePHP 约定(实际上,这都是关于约定的),则不需要在第 3 行和第 4 行中使用 loadModel。也许也可以看看 CakePHP 关系。看看这个:http ://book.cakephp.org/2.0/en/getting-started/cakephp-conventions.html对 Cake 的简短 MVC 解释,这个:http ://book.cakephp.org/ 2.0/en/models/associations-linking-models-together.html用于介绍关系。

于 2013-07-18T14:29:16.827 回答