CakePHPのControllerでDBにsave()しようとしたらエラーが出ました。
環境はCakePHP2.6です。
error
Fatal Error
Error: Call to a member function save() on null
File: /home/test/Test/App/Controller/TestController.php
Line: 6
Notice: If you want to customize this error message, create App/View/Errors/fatal_error.ctp
save()が無いって言ってます。
ソースはこんな感じで書いていました。
App/Controller/TestController.php
<?php
class TestController extends AppController {
public function test() {
if ($this->request->is('post'))
{
$this->Test->save($this->request->data);
}
}
}
?>
App/View/Test/test.ctp
<?php
echo $this->Form->create('Test');
echo $this->Form->input('Test', array('type' => 'text'));
echo $this->Form->end('submit');
?>
App/Model/Test.ctp
<?php
App::uses('AppModel', 'Model');
class Test extends AppModel {
public $useTable = 'test';
}
?>
ControllerでloadModelする必要がありました。
App/Controller/testController.php
<?php
class TestController extends AppController {
public function test() {
if ($this->request->is('post'))
{
$this->loadModel('Test');
$this->Test->save($this->request->data);
}
}
}
?>
Formのcreate()でModelのクラスを指定すればControllerでも勝手に読み込んでくれてるのかと思ってましたが、そんなことは無いみたいですね。