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モデルにmemberscontrollerからデータを送信したい

$use = array('Myprofile');

私は得た

Undefined property: MembersController::$Member

私が使うとき

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

私は得た

Undefined property: MembersController::$Myprofile

正しい方法がわからない問題を解決する別の方法もありますアドバイスをありがとう

4

5 に答える 5

1

$ users配列は、指定したモデルへのアクセスのみを提供します。

$ usesをコメントアウトした場合でも、Membersコントローラーを使用しているため、デフォルトで$this->Memberモデルにアクセスできます。

$ uses配列に別のモデルを追加したら、最初のモデルも含めることを忘れないでください。

また、場合によっては、そのようなことを行うときに、最初にデフォルトのモデルを指定する必要があることを確認すると非常に便利であることがわかりました。

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

そうしないと、$ this-> paginate()などのアクションから予期しない結果が生じる可能性があります

于 2011-05-02T06:23:15.650 に答える
0

両方のモデルを$usesアレイに追加する必要があります。

var $uses = array('Myprofile', 'Member');
于 2011-05-02T05:00:13.547 に答える
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

通常の方法で、関連するモデルのパブリックメソッドを呼び出すことができます。例えば

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 に答える