Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Yii2 为什么会出现错误;缺少所需的参数:id“;?_Yii2 - Fatal编程技术网

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'