Symfony表单生成 - 为什么?

xil*_*il3 8 php forms symfony1

我一直在思考这个问题 - 我从来没有完全理解为什么你想要以编程方式生成所有表单,除非它们完全是动态的.但根据我的经验,大多数都是静态的.

现在,回到手头的主要问题 - 使用Symfony,它会根据您将模块关联到的表(构建它时)为您生成所有表单.我的问题是,你为什么要生成这些表格?在大多数情况下,这些是静态表单,应该很容易在模板中编辑.

对我来说,主要的问题是,如果你有一个后端和前端开发人员团队,也许还有一些设计师.设计人员或前端开发人员(可能或可能没有太多或任何PHP经验)想要在模板目录中更改表单(用于审美目的),模板目录包含所有视图.好吧,他们不能真的,因为它都是由专门为该表单构建的表单类生成的.那么,现在他们需要回到后端开发人员并要求他们为他们改变一些东西?

我可能会错过表单生成的观点,但是我看到它的方式 - 如果它是静态的,则不需要以编程方式生成它,但如果它是完全动态的,那么是的,它没关系.

对此有何看法?

ric*_*age 6

因为在大多数情况下,使用的字段类型与模式列非常相似,假设您首先设计了正确的模式;-)例如varchar(200)转换为单行文本输入,MySQL longtext转换为textarea等等上.快速简单然后移动到渲染,可能需要几次调整.生成的表单类还为您提供了一个弹出窗体小部件验证器以进行表单验证的位置.

你当然可以在任何你想要的地方使用验证器类,但是我觉得表单框架很好地封装了它.

渲染表单虽然是一个单独的问题 - 正如您所提到的,您有一个观点.Symfony中的懒惰方法就是简单地做,<?php echo $form; ?>但最好自己渲染单个字段,例如:<?php echo $form["fieldname"]->render(); ?>等等.如果您的视图是这样构建的,那么您的前端开发人员应该能够根据需要重新排序字段.

编辑:在渲染过程中添加类和其他属性:

<?php
  echo $form["fieldname"]->render(
    array("class" => "myNewClass", "title" => "My Title", ...)
  );
?>
Run Code Online (Sandbox Code Playgroud)

编辑2基本上我要传达的是,您将始终能够找到Symfony中的表单框架不适合的角落案例.您将能够找到每个框架中的每个组件;-)但是在大多数情况下,它可以很好地完成工作并且相对容易.如果你发现自己不断反对它,那么我建议你从错误的角度来看它,或者你刚刚发现上面提到的所有角落情况:-)