I sometimes get messed up by the three rendering methods:
Controller::render()
Controller::renderPartial()
Controller::renderFile()
Please could you explain. Thank you!
render()
is commonly used to render a view that corresponds to what a user sees as a "page" in your application. It first renders the view you have specified and then renders the layout for the current controller action (if applicable), placing the result of the first render into the layout. It then performs output processing (which at this time means automatically inserting any necessary <script>
tags and updating dynamic content) and finally outputs the result.
renderPartial()
is commonly used to render a "piece" of a page. The main difference from render()
is that this method does not place the results of the render in a layout. By default it also does not perform output processing, but you can override this behavior using the $processOutput
parameter.
renderFile()
is a low-level method that does the grunt work of rendering: it extracts the data variables in the current scope and then runs the view code. The other two methods internally call this one, but you should practically never need to call it yourself. If you do, keep in mind that you need to pass in a file path (not a view path).