AJAX を介してモデルを更新するためにこのメソッドをセットアップし、存在しない場合は新しいモデルも作成して拡張しようとしました。
public function actionAjaxUpdate($id = null)
{
if($id === null)
$model = new MyObject;
else
$model = $this->loadModel($id);
if(isset($_POST['MyObject']))
{
$model->attributes = $_POST['MyObject'];
$model->save();
}
}
AJAX 経由で更新するときに送信される URL の例。末尾の数字はモデル ID です。
/admin/myObject/ajaxUpdate/1
/admin/myObject/ajaxUpdate/2
/admin/myObject/ajaxUpdate/3
...
ここでの問題は、ID が提供されているため、更新は正常に機能しますが、新しいモデルの作成が機能しないことです。新しいアイテムの ID がまだ存在しないため、URL ルートは 404 を返します。
要求された URL /cmsadmin/myObject/ajaxUpdate がこのサーバーで見つかりませんでした。
この問題を解決するための良いアプローチは何でしょうか?
パラメータなしで同じメソッドをオーバーロードしようとし$id
ましたが、このスレッドで説明されているように、PHP はオーバーロードをサポートしていません: Yii フレームワークのモデルでのメソッドのオーバーロード
追加情報が必要な場合は、コメントを残してください。
==== 追加情報 ====
main.php
<?php
$backend = dirname(dirname(__FILE__));
$frontend = dirname($backend);
Yii::setPathOfAlias('admin', $backend);
return array(
'basePath' => $frontend,
'controllerPath' => $backend . '/controllers',
'viewPath' => $backend . '/views',
'runtimePath' => $backend . '/runtime',
'components' => array(
'urlManager' => array(
'urlFormat' => 'path',
'showScriptName' => false,
'caseSensitive' => false,
'appendParams' => true,
'rules' => array(
'admin/<controller:\w+>/<action:\w+>/<id:\d+>'=>'/<controller>/<action>',
'admin/<controller:\w+>/<action:\w+>'=>'/<controller>/<action>',
...