如何将控制器数据发送到其他模型?

时间:2011-05-01 21:44:30

标签: cakephp cakephp-1.3 cakephp-appmodel

我为注册创建视图并将数据发送到控制器

//app::import('Model','Myprofile');
Class MembersController extends AppController {
    var $name = 'Members';
    var $helpers = array('Form', 'Session');
    var $uses = array('Myprofile'); //

    function register() {
        //$myprofile = new Myprofile();
        if (!empty($this - > data)) {
            $this - > Member - > create();
            if ($this - > Member - > save(($this - > data['Member']['username']), ($this - > data['Member']['password'])) && $this - > Myprofile - > save(($this - > data['Myprofile']['name']), ($this - > data['MyProfile']['address']), ($this - > data['Myprofile']['phonenumber']))) {
                $this - > redirect('index');
            }
        } else {

            $this - > Session - > setFlash('failed');
        }

    }

我想将成员控制器的数据发送到Myprofile Model 我尝试使用

$use = array('Myprofile');

我得到了

Undefined property: MembersController::$Member

当我使用

//app::import('Model','Myprofile');
//$myprofile = new Myprofile()

我得到了

Undefined property: MembersController::$Myprofile

我不知道正确的方法 还有另一种方法可以解决我的问题 感谢任何建议

5 个答案:

答案 0 :(得分:1)

$ uses数组只允许您访问您在其中指定的模型。

如果您已注释掉$ uses,默认情况下您仍然可以访问$ this->成员模型,因为您位于Members控制器中。

将另一个模型添加到$ uses数组后,您必须记住也包括初始模型。

我还发现,在某些情况下,确保当你做这样的事情时,你应该指定你的默认模型 FIRST

非常有用。
var $uses = array( 'Member', 'Myprofile' );

否则,您可能会从$ this-> paginate()

等操作中获得意外结果

答案 1 :(得分:0)

您必须将两个模型添加到$uses数组:

var $uses = array('Myprofile', 'Member');

答案 2 :(得分:0)

尝试在您的操作中使用$this->loadModel('Myprofile');

您确定您的型号名称是“Myprofile”吗?

你甚至可以调试它以查看它是返回true还是false。这将有助于您找到模型是否已正确实例化。

答案 3 :(得分:0)

如果您使用$uses数组,请确保您也拥有该数组中包含的当前模型。否则,如果您定义特定的$uses数组,则默认情况下不会包含当前模型。

如果MyProfileMember相关,您可以通过

访问它
$this->Member->MyProfile; //depends on associations

您也可以使用App:import

App:import('Model', array('Myprofile')); //loads the class
$myProfile = new MyProfile();
// OR
MyProfile::staticMethod();

答案 4 :(得分:0)

您可以正常方式调用相关模型的任何公共方法。例如

在Profile.php中

function someMethod( $param = null ) {
    // some definition
}

来自MembersController.php

function register ( ) {
    $this->Member->Profile->someMethod( $my_data_to_pass );    // if related
    /* if not related 
    $this->loadModel('Profile');
    $this->Profile->someMethod($my_data_to_pass);
    */
}

作为旁注,如果您遇到这种情况使网址更加明智,请查看路由器(http://book.cakephp.org/2.0/en/core-utility-libraries/router.html)< / p>