Controller does not exist

minkyov - 5 months ago

Hello, I am developing a website and I need an ajax request that calls a function inside a class which retrieves some information that will be used further. I have the following structure in the project: ajax request: $.ajax({ type: "POST", url: './submit/fillSemester' ... }); web.php: Route::post('/submit/fillSemester', '[email protected]'); ChampionsController.class: namespace App\Http\Controllers; use Illuminate\Routing\Controller; class ChampionsController extends Controller {

public function index()
{
    return view('home');
}
public function fillSemester(){
    echo "window.alert('hey')";
}

} This class is found in app/http/controllers. When the value in a select tag is changed the ajax request is fired and supposed to route to the function in the controller but it instead says app/http/controllers/ChampionsController does not exist or throws a 500 error.

I'm a bit baffled because I think that everything for it to work is ready. Thank you for the help.

piterden - 5 months ago

You should try to make addon for streams. And read the docs for Pyro. There are some different folders, if in few words. Try to make own theme for start:

php artisan make:addon your_namespace.theme.awesome_frontend

Then look in php artisan make:addon your_namespace.theme.awesome_frontend folder to see the result. Any new addon in Pyro is like that namespace addons of native Laravel, where you wanted to put your controller. You could place inside any addon everything, what you want. See docs for detailed info.

When you will finish it, try to make a module - this is much interesting, regarding to scaffold shuff:

php artisan make:addon your_namespace.module.awesome_backend

I sure - you would love it!))

Examples are inside core folder.

ryanthompson - 5 months ago

Try and indent your code using proper markdown please ^_^

But when you designate your route you need to define the entire class string for the controller:

Route::post('/submit/fillSemester', 'App\Http\Controllers\[email protected]'); 

But I would agree with @piterden that you would be better off wrapping this in an addon.