![]() |
(03-06-2022, 11:31 PM)spreaderman Wrote: Controller or its method is not found: \App\Controllers\Api\V1::User Because you use lower case first letter in the "v1" folder. Quote:Folder names MUST start with an uppercase letter and ONLY the first character can be uppercase.
03-07-2022, 06:41 PM
(This post was last modified: 03-07-2022, 06:51 PM by spreaderman. Edit Reason: adding clarity )
Thank you. Why would one work and not the other though?
Also, still cannot get post to work. I am not using postman. Using the same code as before; PHP Code: public function testmethod(){ Route as follows; PHP Code: $routes->group("/api/v1", ["namespace" => 'App\Controllers\Api\V1'] , function($routes){ register method as follows; PHP Code: namespace App\Controllers\Api\v1; https://development.example.com/api/v1/user/list - works! https://development.example.com/api/v1/user/add - doesn't work from testmethod or postman. It returns a blank screen and CI debugger bar. Have tried with debugger bar off too and doesn't work as expected. Any pointers appreciated. (03-07-2022, 06:41 PM)spreaderman Wrote: Why would one work and not the other though? Auto routes and Defined routes are different mechanism. The rule "Folder names MUST start with an uppercase letter and ONLY the first character can be uppercase." is a rule in auto routes. If you define a route, it defines the exact controller name to run. The above uppercase rule does not applied. Your controller is `\App\Controllers\Api\v1\User`. So it is not possible to reach by auto-routing. I recommend you disable auto routes and define all routes in the Routes.php. Because it is more secure for human beings. In your Routes file: PHP Code: $routes->group("/api/v1", ["namespace" => 'App\Controllers\Api\V1'] , function($routes){ Your namespace should be 'App\Controllers\Api\v1'. In your testmethod: Code: $get_endpoint = '/api/v1/add'; It should be '/app/v1/user/add'.
Many thanks Kenjis!
The upper case, auto routing and namespace rules very well noted. routes now as follows; PHP Code: $routes->group("/api/v1", ["namespace" => 'App\Controllers\Api\v1'] , function($routes){ I changed testmethod to: Code: public function testmethod(){ https://development.example.com/Testing/testmethod - returns white page via BROWSER https://development.example.com/api/v1/user/add - from POSTMAN it returns my top home page. I was expecting validation errors at least. https://development.example.com/api/v1/user/add - from POSTMAN, it returns my top home page. https://development.example.com/api/v1/user/add - from BROWSER it returns "404 - File Not Found Controller or its method is not found: \App\Controllers\Api\V1\User::add" Sorry but really cannot see where I am going wrong. Any pointer appreciated.
Check your routes by running:
$ php spark routes Quote:https://development.example.com/api/v1/user/add - from BROWSER it returns "404 - File Not Found Controller or its method is not found: \App\Controllers\Api\V1\User::add" If it means, you navigated to https://development.example.com/api/v1/user/add from browser, it sent GET request and you don't have the route. Therefore 404.
Hi Kenjis,
I cannot see anything wrong. +---------+---------------------------------------+--------------------------------------------------------------------------------------------+ | Method | Route | Handler | +---------+---------------------------------------+--------------------------------------------------------------------------------------------+ | GET | signup | \App\Controllers\User_public\Signup\Signup_Controller: ![]() | GET | login | \App\Controllers\User_public\Login\Login_Controller::login_create | | GET | logout | \App\Controllers\User_public\Login\Login_Controller::login_delete | | GET | about | \App\Controllers\User_public\About\About_Controller::about_index | | GET | / | \App\Controllers\User_public/Home\Home_Controller::home_index | | GET | post | \App\Controllers\User_public\Post\Post_Controller::index | | GET | admin/dashboard | \App\Controllers\Admin\Dashboard\Dashboard_Controller::dashboard_index | | GET | admin/settings | \App\Controllers\Admin/App_Setting/App_Setting_Controller::app_setting_index | | GET | admin/update_general_app_setting | \App\Controllers\Admin\App_Setting\App_Setting_Controller::update_general_app_setting | | GET | admin/update_contact_app_setting | \App\Controllers\Admin\App_Setting\App_Setting_Controller::update_contact_app_setting | | GET | admin/update_site_logo_app_setting | \App\Controllers\Admin\App_Setting\App_Setting_Controller::update_site_logo_app_setting | | GET | admin/update_site_favicon_app_setting | \App\Controllers\Admin\App_Setting\App_Setting_Controller::update_site_favicon_app_setting | | GET | admin/update_tracking_app_setting | \App\Controllers\Admin\App_Setting\App_Setting_Controller::update_tracking_app_setting | | GET | admin/update_email_app_setting | \App\Controllers\Admin\App_Setting\App_Setting_Controller::update_email_app_setting | | GET | admin/send_test_email | \App\Controllers\Admin\App_Setting\App_Setting_Controller: ![]() | GET | admin/update_timezone_app_setting | \App\Controllers\Admin\App_Setting\App_Setting_Controller::update_timezone_app_setting | | GET | admin/users | \App\Controllers\Admin\User\User_Controller::user_index | | GET | admin/posts | \App\Controllers\Admin\Post\Post_Controller::post_index | | GET | admin/posts/create | \App\Controllers\Admin\Post\Post_Controller::post_create | | GET | api/v1/user/list | \App\Controllers\Api\v1\User_controller::index | | GET | api/v1/user/single/([0-9]+) | \App\Controllers\Api\v1\ApiController: ![]() | GET | filemanager | \App\Controllers\Modules\Filemanager\Controllers\Filemanager::index | | GET | admin/toggle_user_is_active/(.*) | \App\Controllers\Admin\User\User_Controller::toggle_user_is_active/$1 | | HEAD | admin/toggle_user_is_active/(.*) | \App\Controllers\Admin\User\User_Controller::toggle_user_is_active/$1 | | POST | signup | \App\Controllers\User_public\Signup\Signup_Controller: ![]() | POST | login | \App\Controllers\User_public\Login\Login_Controller::login_create | | POST | password/processreset/([a-zA-Z0-9]+) | \App\Controllers\Password::processReset/$1 | | POST | admin/update_general_app_setting | \App\Controllers\Admin\App_Setting\App_Setting_Controller::update_general_app_setting | | POST | admin/update_contact_app_setting | \App\Controllers\Admin\App_Setting\App_Setting_Controller::update_contact_app_setting | | POST | admin/update_site_logo_app_setting | \App\Controllers\Admin\App_Setting\App_Setting_Controller::update_site_logo_app_setting | | POST | admin/update_site_favicon_app_setting | \App\Controllers\Admin\App_Setting\App_Setting_Controller::update_site_favicon_app_setting | | POST | admin/update_tracking_app_setting | \App\Controllers\Admin\App_Setting\App_Setting_Controller::update_tracking_app_setting | | POST | admin/update_email_app_setting | \App\Controllers\Admin\App_Setting\App_Setting_Controller::update_email_app_setting | | POST | admin/send_test_email | \App\Controllers\Admin\App_Setting\App_Setting_Controller: ![]() | POST | admin/update_timezone_app_setting | \App\Controllers\Admin\App_Setting\App_Setting_Controller::update_timezone_app_setting | | POST | api/v1/user/add | \App\Controllers\Api\v1\User_controller::register | | POST | admin/toggle_user_is_active/(.*) | \App\Controllers\Admin\User\User_Controller::toggle_user_is_active/$1 | | PUT | api/v1/user/update/([0-9]+) | \App\Controllers\Api\v1\ApiController::updateEmployee/$1 | | PUT | admin/toggle_user_is_active/(.*) | \App\Controllers\Admin\User\User_Controller::toggle_user_is_active/$1 | | DELETE | api/v1/user/delete/([0-9]+) | \App\Controllers\Api\v1\ApiController::deleteEmployee/$1 | | DELETE | admin/toggle_user_is_active/(.*) | \App\Controllers\Admin\User\User_Controller::toggle_user_is_active/$1 | | OPTIONS | admin/toggle_user_is_active/(.*) | \App\Controllers\Admin\User\User_Controller::toggle_user_is_active/$1 | | TRACE | admin/toggle_user_is_active/(.*) | \App\Controllers\Admin\User\User_Controller::toggle_user_is_active/$1 | | CONNECT | admin/toggle_user_is_active/(.*) | \App\Controllers\Admin\User\User_Controller::toggle_user_is_active/$1 | | CLI | migrations/([^/]+)/([^/]+) | \CodeIgniter\Commands\MigrationsCommand::$1/$2 | | CLI | migrations/([^/]+) | \CodeIgniter\Commands\MigrationsCommand::$1 | | CLI | migrations | \CodeIgniter\Commands\MigrationsCommand::index | | CLI | ci(.*) | \CodeIgniter\CLI\CommandRunner::index/$1 | | CLI | admin/toggle_user_is_active/(.*) | \App\Controllers\Admin\User\User_Controller::toggle_user_is_active/$1 | +---------+---------------------------------------+--------------------------------------------------------------------------------------------+ Code: | GET | api/v1/user/list | \App\Controllers\Api\v1\User_controller::index | It seems if you POST /api/v1/user/add, \App\Controllers\Api\v1\User_controller::register is executed. What if you add `dd('OK');` in the first line of the register() method?
(03-07-2022, 09:12 PM)kenjis Wrote: Yes, indeed I tried that. Here is a recap of the results; https://development.example.com/api/v1/user/add - browser - 404 Controller or its method is not found: \App\Controllers\Api\V1\User::add https://development.example.com/api/v1/user/add - postman - returns top page of website https://development.example.com/Testing/testmethod - blank page :-( PHP Code: public function register(){ I noticed in the APACHE access log the following; 2xx.2xx.2xx.3x - - [08/Mar/2022:04:29:42 +0000] "POST /api/v1/user/add HTTP/1.1" 303 1062 "-" "PostmanRuntime/7.29.0" This is a 303 error? The next line shows; 2xx.2xx.2xx.3x - - [08/Mar/2022:04:29:42 +0000] "GET / HTTP/1.1" 200 8239 "https://development.example.com/api/v1/user/add" "PostmanRuntime/7.29.0" of course example is a not the domain though.
You don't see the `ok`. It means:
\App\Controllers\Api\v1\User_controller::register() is not executed. The code that you pasted is the really the controller? And what is the controller for top page of website? POST /api/v1/user/add -> (redirected) -> GET / -> Top page Apache redirected the request? Or Controller Filter redirected?
I checked our the man page for php spark routes. I am missing the columns Before Filters | After Filters which would be helpful I think.
yes, thanks. dd('ok') should be producing an ok but it is not. ok, I understand now that the request is being redirected. Thank you. How do you see in the access log where it is being redirected to? How do I know if apache or CI redirected it? |
Welcome Guest, Not a member yet? Register Sign In |