【问题标题】:yii framework: url routingyii 框架:url 路由
【发布时间】:2011-12-28 01:18:03
【问题描述】:

我正在学习 Yii 并遇到了 url 路由问题。 我有一个控制器如下

class PageController extends Controller
{
public function actionIndex()
{

    echo 'index';
}
    public function actionGetPage($page = '')
{
            echo $page;
}

在 config/main.php 中

    'urlManager'=>array(
        'urlFormat'=>'path',
        'rules'=>array(
                            'page'=>'page/index',
                            '<controller:\w+>/<id:\d+>'=>'<controller>/view',
            '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
            '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
        ),
    ),

如何设置 url 规则,以便当我使用 http://localhost/page/About 时它应该可以工作并打印“关于”

【问题讨论】:

标签: yii


【解决方案1】:

正在做的事情: 在您的路线配置中,您应该有类似的内容:

'page/<key>' => 'page/index',

并定义actionIndex()如下:

public function actionIndex($key) {
  echo $key;
...

注意 actionView... 所需的额外参数。这将等于 URL 中使用的。

【讨论】:

    【解决方案2】:

    您是否正在尝试创建一个处理所有页面的简单函数?还是只是为了让“关于”页面正常工作?

    如果你这样做:

    public function actionAbout() {
       // code goes here
    }
    

    在 actionAbout 中调用的视图可以在 localhost/page/about 访问

    页面控制器是使 /page/ 工作的原因,而 /about 由您的操作名称定义。因此,操作之后的任何内容都将成为 URL 中的名称。因此:

    public function actionTestingThis() {
        // code goes here
    }
    

    可以在 /page/testingThis Yii 使用驼峰式进行访问,因此 TestingThis 中的第一个 T 变为小写。

    这能回答你的问题吗?

    【讨论】:

      猜你喜欢
      • 2015-02-05
      • 2011-04-20
      • 2015-10-23
      • 2023-03-10
      • 2011-02-05
      • 2020-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多