Yii2 为什么会出现错误;缺少所需的参数:id“;?
我理解错误是由于变量混淆造成的,尽管这是我的假设。。事实上,此错误发生在更新和视图中:更新和视图。我什么都试过了。。请在我出错的地方戳你的鼻子好吗 我在其中传递两个操作的控制器查看和更新:Yii2 为什么会出现错误;缺少所需的参数:id“;?,yii2,Yii2,我理解错误是由于变量混淆造成的,尽管这是我的假设。。事实上,此错误发生在更新和视图中:更新和视图。我什么都试过了。。请在我出错的地方戳你的鼻子好吗 我在其中传递两个操作的控制器查看和更新: public function actionView($id) { return $this->render('view', [ 'faq' => $this->findModel($id), ]); } public function actionUpda
public function actionView($id)
{
return $this->render('view', [
'faq' => $this->findModel($id),
]);
}
public function actionUpdate($id)
{
$faq = FaqLang::findOne($id);
$faqLang = Faq::findOne($faq->faq_id);
if ($faq->load(Yii::$app->request->post()) && $faqLang->load(Yii::$app->request->post()) && Model::validateMultiple([$faq, $faqLang]))
{
$faqLang->save(false);
$faq->save(false);
return $this->redirect(['view', 'id' => $faq->id]);
}
return $this->render('update', [
'faq' => $faq,
'faqLang' => $faqLang,
]);
}
protected function findModel($id)
{
if (($faq = FaqLang::findOne($id)) !== null) {
return $faq;
}
throw new NotFoundHttpException(Yii::t('app', 'The requested page does not exist.'));
}
view.php,其中我尝试使用DetailView显示数据
<?php
use yii\helpers\Html;
use yii\widgets\DetailView;
/* @var $this yii\web\View */
/* @var $faqLang app\modules\admin\models\Faq */
/* @var $faq app\modules\admin\models\FaqLang */
//$this->title = $faq->id;
$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Faqs'), 'url' => ['index']];
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="faq-view">
<h1><?= Html::encode($this->title) ?></h1>
<p>
<?= Html::a(Yii::t('app', 'Update'), ['update', 'id' => $faq->id], ['class' => 'btn btn-primary']) ?>
<?= Html::a(Yii::t('app', 'Delete'), ['delete', 'id' => $faq->id], [
'class' => 'btn btn-danger',
'data' => [
'confirm' => Yii::t('app', 'Are you sure you want to delete this item?'),
'method' => 'post',
],
]) ?>
</p>
<?= DetailView::widget([
'faq' => $faq,
'attributes' => [
'id',
['attribute' => 'name', 'value' => 'faqLang.name'],
['attribute' => 'body', 'value' => 'faqLang.body:ntext'],
'put_date',
[
'attribute' => 'hide',
'format' => 'html',
'value' => function($model) {
if($model->hide == 'show')
return 'Нет';
else
return 'Да';
}
],
],
]) ?>
FaqLang.php
public function getFaq()
{
return $this->hasOne(Faq::className(), ['id' => 'faq_id']);
}
您可能会看到此错误,因为用于运行控制器操作的请求路径/查询字符串不包括
$id
参数
如果在控制器操作中指定方法参数,则该参数必须在路由中定义,并在请求中传递
你的行动方法如下:
public function actionView($id)
{
....
}
这条路线应该是
'/view/<id:\d+>' => 'admin/faqs/view'
'/update/<id:\d+>' => 'admin/faqs/update'
这条路线应该是
'/view/<id:\d+>' => 'admin/faqs/view'
'/update/<id:\d+>' => 'admin/faqs/update'
没有定义
id
参数,控制器将抛出错误缺少所需参数:id
显示错误,或者您尝试访问此操作时运行时app.log中的一部分您的url结构是什么?@vvpanchev Hello url structure:admin/faqs/updateHello my log:@vvpanchev我根据您的问题理解了我的错误。。但是现在当传递管理员/常见问题解答/更新时?Id=1发生另一个错误:在null上调用成员函数formName()
'/update/<id:\d+>' => 'admin/faqs/update'
'/view' => 'admin/faqs/view'