-
-
Save tommymarshall/ee41e5c49c39420a7957 to your computer and use it in GitHub Desktop.
<?php | |
// Home | |
Route::get('home', 'PagesController@home'); | |
// @about method always fires when viewing a page, no matter the page | |
Route::any('page' , [['about'], 'uses' => 'PagesController@about']); | |
Route::any('page' , [['vision'], 'uses' => 'PagesController@vision']); | |
Route::any('archive' , ['blog', 'uses' => 'BlogController@index']); |
So, this is interesting, got it working using this syntax:
<?php
Route::get('page' , ['about', 'uses' => 'PagesController@about']);
Route::get('page' , ['vision', 'uses' => 'PagesController@vision']);
Basically instead of my pages ("about" and "vision") being passed as an array, just passing them as a string works. This if fine for me since I am not using ID's and have permalinks set up.
EDIT: Ah, just saw this is documented in "Other way to use a Controller" section at http://framework.themosis.com/docs/controllers/
The new issue appears to be that POST requests are not being matched, even though I am using Form::open()
. Hmmm...
Update: I made a mistake. I've tested again and in fact there is an issue when using an array
in place of a string. This needs a patch as soon as possible.
Regarding the form, I can't see any issues. When listening to a POST request, the methods is triggered correctly. Don't forget to add a Route::post()
otherwise this won't work.
I'm going to patch the framework this week so you'll be able to update it. Thanks for catching this one.
Hi tommy,
can you apply this "patch" on the themosis-framework
Route.php class located: themosis-framework/src/Themosis/Route/Route.php
. Replace the lines 102->112
by the following code:
if (!isset($action['params']))
{
// The first element passed in the action is used
// for the WordPress conditional function parameters.
$param = array_first($action, function($key, $value)
{
return is_string($value) || is_array($value);
});
if (is_string($param))
{
$action['params'] = (false !== strrpos($param, '@')) ? null : $action[0];
}
else if (is_array($param))
{
$action['params'] = $param;
}
}
I've also updated the master branch of the themosis-framework
so if you want to test this, simply update your composer.json
file to use the dev-master
package and run a composer update
.
Let me know how it goes. I will test this patch on several applications. If everything is ok, I will release a minor version of the framework so this can be fixed.
Regarding the POST
requests, let me know if you still get an error and otherwise, please paster your code so I can test it also.
Great! ran composer update
and that did the trick. Thanks a bunch! The POST requests still sadly do not work. Here's the code: https://gist.github.com/tommymarshall/e90112157a8d76c6d4f1
hmm...that's weird. I suppose I'll have to test it using homestead and find out why this doesn't work. I'll try this week the homestead/themosis installation and come back to you if I find something.
The only suggestion I can give you right now is to try to use another vagrant file loading a basic Lemp environment and let me know how it goes. In theory it should work correctly on nginx but I must admit that it's not yet heavily tested. I'll post this issue on Twitter also so perhaps someone with heavy knowledge of homestead/nginx/WordPress could help 😄