我创建了一个名为HotelController.php
的单独的视图控制器,并在其中添加了以下内容:
<?php
namespace app\controllers;
use Yii;
use yii\web\Controller;
use yii\filters\AccessControl;
/**
* HotelController is only for displaying static pages.
*/
class HotelController extends Controller
{
/**
* Displays news story 1 page.
*
* @return string
*/
public function actionSunshine()
{
return $this->render('sunshine');
}
}
然后,我在view
文件夹内创建了一个名为hotel
的文件夹。在此文件夹中,我创建了一个名为sunshine.php
的视图。当我访问mysite.com/hotel/sunshine
时,此方法效果很好并显示页面。现在的问题是站点上的图像消失了,因为浏览器试图从mysite.com/img/location.jpg
获取图像,而不是页面从该路径mysite.com/hotel/img/location.jpg
获取图像。
在web.php中,我的重写规则设置如下:
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing'=>false,
'rules' => [
'<alias:[\w\-]+>' => 'site/<alias>'
],
],
如何阻止此问题的发生。我只希望页面url结构不重写页面上的其他链接。
更新:
在sunshine.php文件中,下面有一个示例代码:
<?php
use yii\helpers\Html;
use worstinme\uikit\ActiveForm;
use yii\captcha\Captcha;
$this->title = 'Demo';
<?php
use yii\helpers\Url;
?>
<div class="uk-section" src="img/demo.jpg">
<div class="uk-container">
<div class="uk-width-1-1">
<div class="left-indent uk-light">
<h1>Lorem Ipsum </h1>
</div>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim.</p>
<p>Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus.</p>
</div>
</div>
</div>
由于我之前给出的原因,html代码中的图像无法加载。
答案 0 :(得分:1)
您已包含Url帮助程序,但尚未使用它。您可以将src路径更改为:
<?= Url::to('@web/img/demo.gif'); ?>
@web是Web根目录。
这将自动为您更新webroot的路径,而不管视图在哪里。
答案 1 :(得分:0)
您的图片使用的是相对URL,因此它始终相对于当前URL。您应该使用getBaseUrl()
使其绝对:
<div class="uk-section" src="<?= Yii::$app->getRequest()->getBaseUrl() ?>/img/demo.jpg">