标准表单元素,在 MVC 体系结构中放置代码的位置



我正在创建自己的CMS。我在MVC框架的帮助下做到这一点。我认为CMS应该使用一组标准元素构建。例如,按钮,文本字段和所有表单元素所在的div容器等。

例如,当我想创建一个基本页面时,我想在视图中做这样的事情:

$cmsForm->beginTab('tab name');
$cmsForm->textfield('name', 'default value');
$cmsForm->textfield('email', '');
$cmsForm->textarea('info', '');
$cmsForm->submit('Save');
$cmsForm->endTab();

问题是,我不确定将这些方法放在哪里。我显然不能将这些方法放在控制器中。但也许模型是一个好地方?另一方面,模型层用于从持久层存储/检索数据,而不是用于返回 HTML...

对于

这种事情,在MVC架构中,什么地方会是一个好地方?

这种类型的代码属于您的视图层。请记住,没有规则规定您的视图图层只能是模板。

没有规则说你必须做什么。

如果我是你,我会编写自己的类并在框架中实现它,因为以后需要时会更容易重构。此外,您不会意外更改框架的逻辑(一切都可能发生(。

另一方面,模型层用于从持久层存储/检索数据,而不是用于返回 HTML

实际上,模型层用于业务逻辑。


这显然是与表示逻辑相关的代码,因此应该在视图中。以为我认为,与其使用这种奇怪的生成器脚本,不如编写一个模板,然后处理该模板。

此外,您的 API 很糟糕。你甚至没有听说过 SOLID 原则吗?

如果会更好(但仍然被误导,恕我直言(有这样的东西:

$foo = new HTMLForm();
$name = new HTMLInput('name');
$name->setValue('default value');
$name->setRules(array('required'));
$foo->addField( $name );
$email = new HTMLInput('email');
$email->setRules(array('required', 'email'));
$foo->addField( $email )
// other fields added
$template = new Template('/path/to/template.something');
$template->bind('form', $foo);
$output = $template->render();

最新更新