(symfony1.4) フォームクラスの生成で Fatal error: Call to a member function setTableName() とかなんとか
symfony1.4 で、モデルのコンストラクタのオーバーライドをトチったら厄介なエラーに悩まされたのでメモ。
"Customer" モデルクラスのコンストラクタをこんな風に書きました。parent::__construct
を呼ぶのを忘れてます。いっぱしの phper なら鼻で笑っちゃうような初歩的なミスですけど。
$ vim lib/model/doctrine/Customer.class.php
class Customer extends BaseCustomer
{
// バグコード
public function __construct()
{
$this->ehehe = sfConfig::get('app_ehehe');
}
// 以下略
}
そしたらフォームクラスの自動生成で意味不明なエラーが出るようになりました。
↓のように doctrine:build でモデル&フォームを自動生成しようとすると、モデルの生成は成功するけど、続くフォームの生成で Fatal error で失敗。
$ ./symfony doctrine:build --model --forms
>> doctrine generating model classes ←モデル生成
>> file+ /var/folders/wj/fp8svh9j25l0yz4lx61p84cm0000gn/T/doctrine_schema_59077.yml
>> tokens /var/www/ehehe/lib/model/doctrine/base/BaseCustomer.class.php
>> autoload Resetting application autoloaders
>> file- /var/www/ehehe/cache/ehehe/dev/config/config_autoload.yml.php
>> doctrine generating form classes ←フォーム生成
PHP Fatal error: Call to a member function setTableName() on a non-object in /var/www/symfony-1.4.18/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Abstract.php on line 140
Fatal error: Call to a member function setTableName() on a non-object in /var/www/symfony-1.4.18/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Abstract.php on line 140
PHP Fatal error: Call to a member function evictAll() on a non-object in /var/www/symfony-1.4.18/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php on line 1239
Fatal error: Call to a member function evictAll() on a non-object in /var/www/symfony-1.4.18/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php on line 1239
エラーを見ても何が何やら分かんないです。で結局、モデルクラスのコンストラクタが原因だったと。
正しくはこう。
$ vim lib/model/doctrine/Customer.class.php
class Customer extends BaseCustomer
{
// 正しいコード
public function __construct($table = null, $isNewEntry = false)
{
$this->ehehe = sfConfig::get('app_ehehe');
parent::__construct($table, $isNewEntry);
}
// 以下略
}
こんなアホなミスする奴はグーグル先生も見つけらんなかったから僕がきっとパイオニアだよ。同じミスするアホの役に立つことを願って書き残します。そこのお前だよおいアホ m9(^Д^)プギャー
じゃね。