私の問題は今モデルは、検証のセットを持っているということですので、のようなルール:は、CakePHP
var $validate = array(
'title' => array(
'rule' => 'notEmpty'
),
'uri' => array(
'slugged' => array(
'rule' => '/^[a-z0-9-_]+$/i',
'message' => 'This field should only contain characters, numbers, dashes and underscores'
),
'uniqueUrl' => array(
'rule' => array('uniqueUrl'),
'message' => 'A page has already acquired this url'
)
),
'meta_keywords' => array(
'rule' => 'notEmpty'
),
'meta_description' => array(
'rule' => 'notEmpty'
),
'layout' => array(
'rule' => 'notEmpty'
)
);
問題がhasOneの関係を持っている別のモデルでは、そのコントローラはまた、データを挿入することですそれに私はそのページからタイトル、URI、レイアウトを必要としないようにしたい。どうすればいいのですか?
投稿モデルがあり、そこでページの値を設定しました。
Array
(
[Post] => Array
(
[title] => data[Post][title]
[body] =>
Post Body
)
[Category] => Array
(
[Category] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
)
[Page] => Array
(
[meta_keywords] => data[Page][meta_keywords]
[meta_description] => data[Page][meta_description]
)
)
私はそれがこのようなことに転じページモデル
$this->data['Page']['title'] = $this->data['Post']['title'];
のための情報を設定するには、コントローラから次の操作を行います。
Array
(
[Post] => Array
(
[title] => data[Post][title]
[body] =>
Post Body
)
[Category] => Array
(
[Category] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
)
[Page] => Array
(
[meta_keywords] => data[Page][meta_keywords]
[meta_description] => data[Page][meta_description]
[title] => data[Post][title]
)
)
私の問題は、私は必要としないことですPage
フィールドを保存します。 Post belongsTo Page
。
ポストとしてポストを保存する場合は、ポストコントローラでメソッドのデフォルトビューを使用しますが、[Page][layout]
は必要ありません。ページはスタティックページを使用し、ポストを作成するときではなく、ページを作成するときに必要になります。
これは奇妙なことです。なぜなら、検証ルールはあなたのデータベースに入るものを「保護」するべきだからです。空のタイトルが受け入れられる場合、ルールは 'notEmpty'であってはなりません。どうか明らかにしてください。フィールドの1つだけを更新し、そのプロセスで 'title'などに触れる必要はないということを意味していますか? – deceze
実際には、私は他のモデルから情報を得るべきです、私はPost ['title']などからPage ['title]を得るでしょう。私はコントローラ内にそれらを置いてsaveAllの直前に値を設定するべきですプロセス? –
私は既にそれをしましたが、別の方法があれば私は考えていました。 –