2

私のコードの簡略化されたバージョンから始めましょう:

モデル:Sku.php

class Sku extends AppModel {

}

コントローラー: SkusController.php

class SkusController extends AppController {

    public function admin_add() {

        $this->layout = 'admin';

        if($this->request->is('post')) {
            if($this->Sku->save($this->request->data)) {
                // Do stuff
            }
            else // Do stuff
        }

    }

}

表示: Skus > admin_add.ctp

<?php echo $this->Form->create('Sku', array('type'=>'file')); ?>
<?php echo $this->Form->input('Sku.item_no')); ?>
<?php echo $this->Form->input('Sku.size'); ?>
<?php echo $this->Form->input('Sku.color'); ?>
<button type="submit">Save SKU</button>
<?php echo $this->Form->end(); ?>

フォームを送信すると、Call to a member function save() on a non-object というエラーが表示されます。コントローラー ファイルの先頭に次を追加すると、すべて正常に動作し、新しい行が skus テーブルに挿入されます。

public $uses = 'Sku';

適切な命名規則をすべて使用した場合、前の行を省略できませんか? さらに、同じ命名規則に従ってすべてのファイル名とクラス名を Test に変更すると、 $uses 変数なしで機能します。これにより、コードの他の場所に何らかの競合があると思われます。なぜこれが起こっているのか、または潜在的な問題をどこで探すべきかについての提案はありますか?

前もって感謝します!

4

2 に答える 2

1

次のコードを試してみてください。うまくいくと思います

モデル:Sku.php

class Sku extends AppModel {
  var $name = 'Sku';
}
于 2014-02-14T13:07:16.113 に答える