Gub*_*ooo 10 php zend-framework routes zend-route
我有两个用户友好的URL问题.
我有一个路由器设置如下:
http://www.example.com/course/view-batch/course_id/19http://www.example.com/java-training/19我已经设置了以下路线application.ini:
resources.router.routes.viewbatchcourse.route = "/:title/:course_id/"
resources.router.routes.viewbatchcourse.defaults.controller = course
resources.router.routes.viewbatchcourse.defaults.action = view-batch
resources.router.routes.viewbatchcourse.reqs.course_id = "\d+"
Run Code Online (Sandbox Code Playgroud)
这非常有效.
现在我有一个新页面 - 其中包含Java的用户评论
http://www.example.com/course/view-reviews/course_id/19http://www.example.com/java-reviews/19我意识到它不可能,因为已经设置了一条路线来匹配该格式.
所以我在想是否有可能使用正则表达式并检查标题是否包含"评论"然后使用此路线.
我试过这种方法,但它不起作用.而是打开视图批处理页面:
resources.router.routes.viewreviews.type = "Zend_Controller_Router_Route_Regex"
resources.router.routes.viewreviews.route = "/:title/:course_id"
resources.router.routes.viewreviews.defaults.controller = "course"
resources.router.routes.viewreviews.defaults.action = "view-reviews"
resources.router.routes.viewreviews.reqs.course_id = "\d+"
resources.router.routes.viewreviews.reqs.title = "\breviews\b"
Run Code Online (Sandbox Code Playgroud)
我最接近它的工作是
resources.router.routes.viewreviews.route = "/:title/:course_id"
resources.router.routes.viewreviews.defaults.controller = "course"
resources.router.routes.viewreviews.defaults.action = "view-reviews"
resources.router.routes.viewreviews.reqs.course_id = "\d+"
resources.router.routes.viewreviews.reqs.title = "reviews"
Run Code Online (Sandbox Code Playgroud)
现在,如果我输入URL http://www.example.com/reviews/19,则会调用view-reviews操作.是否可以 - 检查标题是否包含"评论"一词 - 那么应该调用这条路线?
回到我之前的工作路线http://www.example.com/java-training/19:
resources.router.routes.viewbatchcourse.route = "/:title/:course_id/"
resources.router.routes.viewbatchcourse.defaults.controller = course
resources.router.routes.viewbatchcourse.defaults.action = view-batch
resources.router.routes.viewbatchcourse.reqs.course_id = "\d+"
Run Code Online (Sandbox Code Playgroud)
该数字19是课程ID,我需要在操作中从数据库中提取详细信息.
但是当页面显示时,我不希望数字19可见.
我只想要URL http://www.example.com/java-training
这可能吗?
对于问题1。我认为你可以通过改变路线来非常简单地解决这个问题。您不需要将 :title 作为路线的一部分,而是可以在您的情况下对其进行硬编码。我会推荐以下配置。
resources.router.routes.viewbatchcourse.route = "/java-training/:course_id/"
resources.router.routes.viewbatchcourse.defaults.controller = course
resources.router.routes.viewbatchcourse.defaults.action = view-batch
resources.router.routes.viewbatchcourse.defaults.title = java-training
resources.router.routes.viewbatchcourse.reqs.course_id = "\d+"
resources.router.routes.viewreviews.route = "/java-reviews/:course_id/"
resources.router.routes.viewreviews.defaults.controller = course
resources.router.routes.viewreviews.defaults.action = view-reviews
resources.router.routes.viewreviews.defaults.title = java-reviews
resources.router.routes.viewreviews.reqs.course_id = "\d+"
Run Code Online (Sandbox Code Playgroud)
对于问题2。正如你所描述的,根本就没有。
| 归档时间: |
|
| 查看次数: |
375 次 |
| 最近记录: |