我应该如何准备处理它的路线,而不是网址中的成瘾部分?
$routes = array(
/**
* Static
*/
'news' => new Zend_Controller_Router_Route('news/:page',
array('controller' => 'news', 'action' => 'index', 'page' => 1 )
),
/**
* Dynamic
*/
'thread' => new Zend_Controller_Router_Route(':slug/:page',
array('controller' => 'Thread', 'action' => 'index', 'page' => 1 )
),
e.g。 example.com/ thread-name-slug 它显示带有slug thread-name-slug 的线程,但是当我访问example.com/ news 时想用slug 新闻来展示线程。我想要静态页面。
提前致谢。
答案 0 :(得分:0)
路由器以其声明的 reverse 顺序匹配路由。给定请求URL /news
,路由器将尝试首先匹配路由:slug/:page
,当然,找到匹配,因此它永远不会检查您的news/:page
路由。
解决方案是颠倒您声明路线的顺序。一般来说,人们希望在特定路线之前添加通用路线。
答案 1 :(得分:0)
由于zendframework的最新版本为3.x,我将发布Zf3的示例解决方案,因为它不是一篇关于zend路由的完整文章。
Supouse你想通过只使用一个控制器来集中你的管理请求;因此,您可以检查权限,角色等,以便为您网站的管理页面提供服务。 我们将执行下一个任务:
我们会在" modules.config.php"中创建一个正确注册的管理模块。文件
编辑module.config.php文件:
lblBackground
注意:我们不使用关闭标记?>在我们的文件中
创建" DefineRoutes.php"文件。
package tempo;
public class Sample extends javax.swing.JFrame {
/**
* Creates new form Sample
*/
public Sample() {
initComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
pnMain = new javax.swing.JPanel();
lblBackground = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
pnMain.setLayout(null);
lblBackground.setIcon(new javax.swing.ImageIcon("C:\\Users\\Anderson\\Desktop\\Monkee-Boy Blurred Backgrounds\\bkg-3.jpg")); // NOI18N
pnMain.add(lblBackground);
lblBackground.setBounds(0, 0, 400, 280);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(pnMain, javax.swing.GroupLayout.PREFERRED_SIZE, 400, javax.swing.GroupLayout.PREFERRED_SIZE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(pnMain, javax.swing.GroupLayout.PREFERRED_SIZE, 275, javax.swing.GroupLayout.PREFERRED_SIZE)
);
pack();
}
public static void main(String args[]) {
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Sample.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Sample.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Sample.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Sample.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Sample().setVisible(true);
}
});
}
// Variables declaration
private javax.swing.JLabel lblBackground;
private javax.swing.JPanel pnMain;
// End of variables declaration
}
重要提示:我们定义了第一级通配符:admin 正确的约束是必需,或者它与其他第一级路由重叠。
控制器逻辑是skope中的一些。 希望这个想法有所帮助。
路易斯