頁面由 動作 + 模板 組成,歸屬於 模塊。遵循 MVC:動作處理邏輯,模板負責顯示。
> symfony init-module myapp mymodule
生成目錄結構:
apps/myapp/modules/mymodule/ ├── actions/actions.class.php ├── templates/indexSuccess.php ├── config/, lib/, validate/
動作方法命名 executeXxx(),對應模板 XxxSuccess.php。
// actions.class.php
class mymoduleActions extends sfActions {
public function executeMyAction() { /* 邏輯 */ }
}
<!-- templates/myActionSuccess.php --> <p>Hello, world!</p>
訪問:https://localhost/myapp_dev.php/mymodule/myAction
在 routing.yml 定義規則:
article_show:
url: /article/:stripped_title
param: { module: article, action: show }
動作名專注業務含義(show、list),URL 可任意優化為 SEO 友好格式。
<?php if ($cond): ?>...<?php endif; ?>$this->var = $value,模板直接用 $var。$sf_request、$sf_params、$sf_user 等對象。<?php echo form_tag('mymodule/anotherAction') ?>
<?php echo label_for('name', 'Your name?') ?>
<?php echo input_tag('name') ?>
<?php echo submit_tag('Ok') ?>
</form>
自動生成規範 HTML,支持 select_tag + options_for_select 快速構建下拉框。
link_to()<?php echo link_to('文字', 'module/action?param=val', 'class=btn confirm=Sure?') ?>
路由變更時自動更新 href,支持 confirm、absolute 等屬性。
$this->getRequestParameter('name')$sf_params->get('name', 'default')、$sf_params->has('name')掌握「模塊-動作-模板」三元組、路由解耦、幫助器用法,即可高效構建 Symfony 應用。