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:
- 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.
- 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 callinclude_partial('bar', $vars)
inside of_foo.php
. - 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.
精彩评论