[英]Passing Parameter To Controller - yii2-app-basic Yii2
我在上层 URL 中手动传递 39 以了解如何使用参数。
我想在confirm.php
显示39 但它不起作用。 很快,我将在SiteController
控制器的actionConfirm($id)
中传递$id
。 页面未找到错误来了。 可能是什么问题。
我刚刚问了一个问题URL Routing ,我在那里得到了答案。 但是,现在我被卡住了。
确认.php
<?php
/* @var $this yii\web\View */
use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
use yii\captcha\Captcha;
use yii\bootstrap\Modal;
use yii\helpers\Url;
$this->title = 'Contact';
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="site-about">
<?echo $id;?>
</div>
站点控制器.php
<?php
namespace app\controllers;
use Yii;
use yii\filters\AccessControl;
use yii\web\Controller;
use yii\filters\VerbFilter;
use yii\swiftmailer\Mailer;
use app\models\LoginForm;
use app\models\ContactForm;
use app\models\EntryForm;
use app\models\RegisterForm;
use app\models\LoginExecForm;
use app\models\ForgotPasswordForm;
class SiteController extends Controller
{
.
.
.
public function actionConfirm($id)
{
$id = Yii::$app->request->get('id');
return $this->render("confirm",array("id"=>$id));
}
}
错误来了
如何将 URL 中的 39 带到confirm.php
页面。 请帮我。 原谅我,如果这是一个愚蠢的问题。
你确定你已经启用了吗
short_open_tag=On
在你的 php.ini 中?
正确的短代码也是
你也可以看到这个讨论: PHP echo vs PHP short tags
顺便说一句,如果您在 actionConfirm($id) 的函数名称中使用参数,则不需要两者都需要,您将有一个必需的参数,该参数由请求 URL 中的 GET params 设置的参数填充。 这就是你的情况 /site/confirm/39/
所以要么在函数名中设置它们
public function actionConfirm($id)
或手动获取它们
$id = Yii::$app->request->get('id');
你不需要两者。
但这不是你的问题。 您仍然没有在正确的控制器中调用正确的操作。
使用这个 urlManager 规则
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
您添加的那3个错误删除了它们。
'<controller:\w+>/<id:\d+>' => '/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '/',
'<controller:\w+>/<action:\w+>' => '/',
忘了提及,如果您没有自己的规则,只是不要在设置中设置任何规则,那么将使用默认规则来正常处理大多数查询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.