Cakephp 2.1では、この構造を使用して、保存時にデータをインターセプトしました。
$this->request->data['Setup']['active'] = 1;
ここで、レコード(Dir)を編集した後、次の方法で親IDを取得して、その親(project_id)にリダイレクトします。
$ownParentId = $this->request->data['Dir']['project_id'];
ただし、ここで渡される値が取得されていないだけです。
$this->redirect(array('controller' => 'projects', 'action' => 'edit', $ownParentId));
だから私のリダイレクトは失敗します。
=============返信後==============
次の理由により、project_idがまったく移動していないようです。
私のディレクトリ編集フォームで私はコメントしました:
//echo $this->Form->input('project_id');
ユーザーはプロジェクトIDを変更してはならないからです。
その行のコメントを外そうとしましたが、フォームには何も投稿されない空またはnullの選択コントロールが表示されます。どういうわけか非表示または無効にできる編集コントロールを期待していました。
私のdirsテーブルのフィールドproject_id
CREATE TABLE IF NOT EXISTS `dirs` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`project_id` int(10) NOT NULL,
....
プロジェクトテーブルのidフィールドに 関連付けられています:
CREATE TABLE IF NOT EXISTS `projects` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(200) NOT NULL,
`pr_number` varchar(10) NOT NULL,
`client_id` int(5) NOT NULL,
`exec_id` int(5) NOT NULL,
....
プロジェクトモデル
var $hasMany = array('Daily', 'Dir');
dirモデル
var $belongsTo = array('Project');
おそらく、編集フォームにproject_idコントロールを設定するために、素敵なfind()構造が必要ですか?-または-
編集を保存する前にproject_id値を取得しますか?(projectt_idは編集されているため、すでに保存されています。
完全なdirsコントローラーをhttp://carlosgarcia.us/support/DirsController.txtに投稿しました。
手伝ってくれますか?どうもありがとうございます。
カルロス