如何从网址的下方可视化页面?

时间:2014-09-11 20:49:03

标签: php url-routing

这是可以想象的最糟糕的标题,让我尽我所能地解释我的关注。因此,基本上在我的框架中,我使用site.com/controller/method/parameters

类型的URL

我将以此页面为例site.com/news/edit/12

然后,如果我不应用路由,则我的控制器名称必须为News,被调用的方法将为edit,其中包含单个参数12。然后,如果为了表明我的担忧,我决定在不同的页面中编辑新闻标题和正文,我将不得不导航到site.com/news/edit/12/title。这是它变得混乱的地方,基本上我想问的是:

包含依赖于传递给控制器​​的参数的页面的正确方法是什么?

恕我直言,这看起来很难看,如果我在页面树下面有更多这样的页面分隔怎么办

class News {

    public function edit($id, $section){
        if(method_exists($this, $section){
            return $this->$section($id);
        }
    }

    private function title($id){
        // Display page to edit news title
    }

    private function body($id){
        // Display page to edit news body
    }

}

更不用说这也可能导致调用不应该被调用的现有方法的潜在问题。

1 个答案:

答案 0 :(得分:1)

请不要根据get params动态执行方法。这可能非常危险。 标准路由的一种简单方法:

// site.com/news/edit-title/12

public function editTitle($id);
// or depending on your framework
public function edit_title($id);

另一种可能更清洁的解决方案是构建自定义路线:

// site.com/news/edit/title/12

public function editTitle($id);