php – 在Zend Framework应用程序中集成现有页面
发布时间:2020-12-13 21:38:05 所属栏目:PHP教程 来源:网络整理
导读:是否可以绕过Zend Framework网站中的任何控制器?相反,我希望执行一个普通的 PHP脚本,并将其所有输出放在来自ZF的布局/视图中: 请求 – 执行PHP脚本 – 捕获输出 – 添加输出到视图 – 发送回复 挑战在于将现有页面/脚本集成到新创建的Zend Framework站点中
是否可以绕过Zend Framework网站中的任何控制器?相反,我希望执行一个普通的
PHP脚本,并将其所有输出放在来自ZF的布局/视图中:
请求 – >执行PHP脚本 – >捕获输出 – >添加输出到视图 – >发送回复 挑战在于将现有页面/脚本集成到新创建的Zend Framework站点中,该站点使用MVC模式. 干杯 解决方法
我在.htaccess文件中创建了一个新条目:
RewriteRule (.*).php(.*)$index.php [NC,L] 通常的.php文件上的每个请求都由ZF的index.php处理. 接下来,我创建了一个额外的路由来将这些请求路由到某个控制器操作: $router->addRoute( 'legacy',new Zend_Controller_Router_Route_Regex( '(.+).php$',array( 'module' => 'default','controller' => 'legacy','action' => 'index' ) ) ); 这是适当的行动: public function indexAction() { $this->_helper->viewRenderer->setNoRender(); $this->_helper->layout->setLayout('full'); // Execute the script and catch its output ob_start(); require($this->_request->get('DOCUMENT_ROOT') . $this->_request->getPathInfo()); $output = ob_get_contents(); ob_end_clean(); $doc = new DOMDocument(); // Load HTML document and suppress parser warnings @$doc->loadHTML($output); // Add keywords and description of the page to the view $meta_elements = $doc->getElementsByTagName('meta'); foreach($meta_elements as $element) { $name = $element->getAttribute('name'); if($name == 'keywords') { $this->view->headMeta()->appendName('keywords',$element->getAttribute('content')); } elseif($name == 'description') { $this->view->headMeta()->appendName('description',$element->getAttribute('content')); } } // Set page title $title_elements = $doc->getElementsByTagName('title'); foreach($title_elements as $element) { $this->view->headTitle($element->textContent); } // Extract the content area of the old page $element = $doc->getElementById('content'); // Render XML as string $body = $doc->saveXML($element); $response = $this->getResponse(); $response->setBody($body); } 非常有用:http://www.chrisabernethy.com/zend-framework-legacy-scripts/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |