Warning: This page has not been updated in over over a year and may be outdated or deprecated.
development:plugins:controllers
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
development:plugins:controllers [2020/05/12 12:11] – [Overriding an Existing Controller] demiankatz | development:plugins:controllers [2021/08/03 14:04] (current) – demiankatz | ||
---|---|---|---|
Line 32: | Line 32: | ||
* Create a [[development: | * Create a [[development: | ||
* Create a new class in your module' | * Create a new class in your module' | ||
- | * If you used the code generator, you are now done. If you are setting things up manually, you will also need to add some configuration to activate your new class. In your module' | + | * If you used the code generator, you are now done. If you are setting things up manually, you will also need to add some configuration to activate your new class. In your module' |
< | < | ||
Line 38: | Line 38: | ||
' | ' | ||
' | ' | ||
- | ' | + | ' |
], | ], | ||
' | ' | ||
Line 51: | Line 51: | ||
Creating a new controller is much like overriding an existing one. | Creating a new controller is much like overriding an existing one. | ||
- | * As described above, create a custom module, build a new controller, and set up an invokables | + | * As described above, create a custom module, build a new controller, and set up a factory |
- | * Now you need to add routing rules so the framework knows how to find your controller and so you can conveniently link to it within templates. | + | * Now you need to add routing rules so the framework knows how to find your controller and so you can conveniently link to it within templates. |
==== Example - How to add a new page to your theme ==== | ==== Example - How to add a new page to your theme ==== | ||
- | :!: This example | + | :!: This example |
- | // Note: this example | + | // Note: this example |
- | * Create a new controller | + | * Create a new controller |
- | It extends AbstractBase and contains just a function that returns an array: | + | |
- | class TestController extends AbstractBase | + | php $VUFIND_HOME/public/ |
- | { | + | |
- | /** | + | |
- | * | + | |
- | * @return | + | |
- | */ | + | |
- | public function homeAction() | + | |
- | { | + | |
- | return $this-> | + | |
- | } | + | |
- | } | + | |
- | * In / | + | * This command will create a file called $VUFIND_HOME/module/MyModule/src/MyModule/ |
- | below the ' | + | |
- | add a new | + | |
- | ' | + | |
- | ' | + | |
- | and below | + | |
- | $staticRoutes = array( | + | |
- | add your template filename and path | + | |
- | ' | + | |
- | | + | <code php> |
- | * Put your contents in that file. For test you can try with | + | <?php |
- | '' | + | |
+ | namespace MyModule\Controller; | ||
+ | |||
+ | class TestController extends \VuFind\Controller\AbstractBase | ||
+ | { | ||
+ | /** | ||
+ | * | ||
+ | * @return \Laminas\View\Model\ViewModel | ||
+ | */ | ||
+ | public function homeAction() | ||
+ | { | ||
+ | return $this-> | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | * Now set up a static route to this new controller action like this: | ||
+ | |||
+ | php $VUFIND_HOME/ | ||
+ | |||
+ | | ||
+ | * Put your contents in that file. For example, | ||
+ | |||
+ | <code php> | ||
+ | This is my test page -- it embeds behavior from the search page: | ||
+ | <? | ||
+ | </code> | ||
+ | |||
+ | * Now point your browser at <nowiki>http:// | ||
+ | |||
+ | ===== Related Video ===== | ||
+ | |||
+ | See the [[videos: | ||
---- struct data ---- | ---- struct data ---- | ||
+ | properties.Page Owner : | ||
---- | ---- | ||
development/plugins/controllers.1589285500.txt.gz · Last modified: 2020/05/12 12:11 by demiankatz