Yii2链接和表单操作始终返回到“localhost”(错误的基本URL)

3
我在将操作系统升级到el capitan后,使用yii2时出现了错误。我的项目根目录为localhost/~robbyprawira/myproject/
我创建了一个链接,例如<a href="/home">link</a>。当我在浏览器上点击该链接时,它会跳转到localhost/home。实际上应该是localhost/~robbyprawira/myproject/home
表单提交也遇到了同样的问题。<form action="/admin/update"></form>。当我点击提交按钮时,它会跳转到localhost/admin/update。实际上应该是localhost/~robbyprawira/myproject/admin/update
请问是否有人能帮我解决这个问题?谢谢!
<?php 
   use yii\bootstrap\ActiveForm;
   use yii\helpers\Html;
   use yii\helpers\Url; 
 ?> 

 <?php 
      $form = ActiveForm::begin(['action' => Url::to('/admin/update')]); 
   ?>
   <?= $form->field($model, 'admin_email', ['inputOptions' => ['title' => Yii::t('myproject/update','Email')]]) ?> 
   <?= Html::submitButton(Yii::t('myproject/update', 'Update'), ['class' => 'btn btn-lg btn-primary btn-block']) ?> 
  <?php ActiveForm::end(); ?>

请提供您真实的yii2/php代码,而不是摘要,这样我才能尝试建议正确的解决方案。 - ScaisEdge
2个回答

1
Yii2为您提供了许多组件来处理此类情况,而不需要使用直接代码,因此您可以:
对于链接,正确的方式是使用URL助手。
use yii\helpers\Url;

    <a href="<?= Url::to('LINK')?>">

对于锚点标签,你可以使用HTML助手。
  use yii\helpers\Html;

<?= Html::a('Home', ['home'], ) ?>

对于表单,您可以使用Active Form

$form = ActiveForm::begin([
  'id' => 'login-form',
  'options' => ['class' => 'form-horizontal'],
  'action' => Url::to(['/admin/update']),
 ]) ?>
......

<?php ActiveForm::end() ?>

尝试使用方括号[]将其包含,或者使用数组表示法['admin/update']来表示URL。 - ScaisEdge
啊,谢谢。对于链接很好用,但是需要在表单操作中删除“/”=> admin/update。谢谢。 - Robby Prawira
你有更多的建议吗?因为我需要更新我的项目中每个链接和表单操作的许多代码。 - Robby Prawira

0
请尝试使用以下函数来生成URL:
对于文件顶部的两个函数:
use yii\helpers\Url;
  1. 后端:

    Url::to(Yii::getAlias('@web') . '/admin/update', true);

  2. 前端:

    Url::to(Yii::getAlias('@web') . '/home', true);

这对你有用吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接