1

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

//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 模型

$use = array('Myprofile');

我有

Undefined property: MembersController::$Member

当我使用

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

我有

Undefined property: MembersController::$Myprofile

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

4

5 回答 5

1

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

如果您注释掉了 $uses,则默认情况下您仍然可以访问 $this->Member 模型,因为您在 Members 控制器中。

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

我还发现,在某些情况下,确保在执行此类操作时应首先指定默认模型非常有用

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

否则你可能会从像 $this->paginate() 这样的操作中得到意想不到的结果

于 2011-05-02T06:23:15.650 回答
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);
    */
}

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

于 2012-03-24T09:08:10.170 回答
0

尝试$this->loadModel('Myprofile');在你的行动中使用。

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

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

于 2011-05-02T08:37:53.117 回答
0

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

如果与您MyProfile有关,Member您可以通过以下方式访问它

$this->Member->MyProfile; //depends on associations

你也可以使用App:import

App:import('Model', array('Myprofile')); //loads the class
$myProfile = new MyProfile();
// OR
MyProfile::staticMethod();
于 2011-05-02T08:45:50.640 回答
0

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

var $uses = array('Myprofile', 'Member');
于 2011-05-02T05:00:13.547 回答