我已经设置了这种通过 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 框架模型中的方法重载
如果需要任何其他信息,请发表评论。
==== 附加信息 ====
主文件
<?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>',
...