Zend - 静态和动态路线

时间:2016-02-16 12:09:21

标签: php zend-framework

我应该如何准备处理它的路线,而不是网址中的成瘾部分?

$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 新闻来展示线程。我想要静态页面。

提前致谢。

2 个答案:

答案 0 :(得分:0)

路由器以其声明的 reverse 顺序匹配路由。给定请求URL /news,路由器将尝试首先匹配路由:slug/:page,当然,找到匹配,因此它永远不会检查您的news/:page路由。

解决方案是颠倒您声明路线的顺序。一般来说,人们希望在特定路线之前添加通用路线。

答案 1 :(得分:0)

由于zendframework的最新版本为3.x,我将发布Zf3的示例解决方案,因为它不是一篇关于zend路由的完整文章。

Supouse你想通过只使用一个控制器来集中你的管理请求;因此,您可以检查权限,角色等,以便为您网站的管理页面提供服务。 我们将执行下一个任务:

  1. 编辑" module.config.php"文件有一个易于阅读的代码。
  2. 创建DefineRoutes.php文件
  3. 编写一个简单的正则表达式,为所有可行的管理任务设置通配符匹配位置。
  4. 我们会在" 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中的一些。 希望这个想法有所帮助。

    路易斯