开发者

Symfony: Is it possible to setTemplate for components?

There’s no setTemplate() for components! I know but maybe there is another way to do it ?

(The question seems to be about a php framework: http://www.开发者_如何学编程symfony-project.org/)


There is no setTemplate method on sfComponents. You essentially have 3 options:

  1. Name your component the same as the partial you'd like the component to render. This may not be possible if you have multiple components you'd like to share the same template.
  2. Create a partial with the same name of your component and include the partial there. That is, if you had a component with an executeFoo() method that you wanted to render the _bar.php template, simply call include_partial('bar', $vars) inside of _foo.php.
  3. Load the PartialHelper and render the partial manually inside of the components execute method and have the component return sfView::NONE.


Components don't handle templates, you can only use partials. If you need to return a specific partial from inside your components class you can do something like this:

return get_partial('module/action', array('paramName' => $paramValue));

Have a look into the symfony book, chapter 7 view layer


To get around this, i'm doing:

echo get_component('module', 'action', $this->getVarHolder()->getAll());
return sfView::NONE;


This worked for me:

$this->setVar('template', 'templateName');

Obviously the template have to be in the exactly same module.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜