我正在编辑Zend Framework 2模块,我遇到了以下代码:
<?php
echo $this->partial('/menu', array('menu' => $this->menu));
?>
<hr />
<div class="myclass">
<h2>Heading</h2>
<?php
$form = $this->form;
$form->setAttribute('action', $this->url('register'));
$form->prepare();
echo $this->form()->openTag($form);
echo $this->formRow($form->get('name'));
echo '<br />';
echo $this->form()->closeTag();
$this->inlineScript()->offsetSetScript(99, "
function checkFieldMatch() {
var field = $('#txtNewField').val();
//...
}
");
?>
</div>
大部分是现有代码,现在我已经添加了一些jQuery。代码包含HTML,CSS,JavaScript / jQuery和PHP。该代码位于我的/vendor/$module/$submodule/view/$submodule/register/index.phtml
文件中。
由于Zend Framework 2是PHP世界中最新且最重要的重量级框架的印象,我不禁想知道在代码分离原则方面发生了什么。当然,上面代码的这种憎恶必定是用户错误的。我包括的代码的作者帮助在一个文件中创建了这种难以忍受的技术混乱。我想它表明,无论一个复杂的框架是多么善意,当涉及松散的耦合组件时,有人仍然可以将5种技术放入一个简短的单个文件中并让它看起来像地狱。
虽然可能有多种方法可以做到这一点,但我的问题是:
在Zend Framework 2中分离HTML,CSS,jQuery,JavaScript,PHP代码的正确(推荐,设计)方法是什么,以便在可能的情况下将每种技术分成独立的文件和文件夹,同时保持良好的状态 - 定义的工作连接(松散耦合),技术是直接嵌入到彼此绝对需要的地方,还是通过行业最佳实践推荐的?
答案 0 :(得分:1)
在View-Layer中使用partials绝对没有错。视图不仅仅是文本。它也有脚本元素。虽然是的,你可以在Zend Framework的顶部使用(另外)模板语言(比如smarty),因为PHP本身就是一种模板语言(P ...超文本处理器),所以它有点不必要。
以上示例使用FORMS作为一个不好的例子。现在我向你挑战,向我展示任何实际处理Form的框架/语言。 FORMS,无论语言如何,无论框架总是一团糟,因为它们总是包含几层MVC。表单不仅仅是View,因此您无法将其完全分开。
$this->formXY()
实际上只是一个ViewHelper,所以从技术角度来看这就是ViewLayer。
唯一真实的我同意的是JavaScript处理。但是,您可以再次选择自己包含JavaScript文件。或者你可以为你的所有页面都有一个大的javascript文件。这 - 再次 - 不是只有ZF的问题;)