1
votes

this is my web route php:

Route::get('settings', 'Settings\SettingsController@edit')->name('admin.settings.edit');

and I call this route name like below:

            <a href="{{ route('admin.settings.edit') }}" class="nav-link ">
                <span class="title">Settings</span>
            </a>

but I got this error:

Route [admin.settings.edit] not defined. (View: C:\xampp7\htdocs\template\resources\views\layouts\admin\sidebar.blade.php) (View: C:\xampp7\htdocs\template\resources\views\layouts\admin\sidebar.blade.php) (View: C:\xampp7\htdocs\template\resources\views\layouts\admin\sidebar.blade.php)

rouet:list returns this error message: `Class App\Http\Controllers\Admin\Settings\SettingsController does not exist

but I have this controller:

namespace App\Http\Controllers\Admin\SettingsController;

use App\Http\Controllers\Controller;
use App\Shop\Brands\Repositories\BrandRepository;
use App\Shop\Brands\Repositories\BrandRepositoryInterface;
use App\Shop\Brands\Requests\CreateBrandRequest;
use App\Shop\Brands\Requests\UpdateBrandRequest;

class SettingsController extends Controller
{


    public function __construct(){}


    public function index()
    {}


    public function create(){}

    public function store(){}

    /**
     *
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
     */
    public function edit()
    {
        dd("milad");
        return view('admin.brands.edit', ['brand' => '']);
    }

    /**
     * @param UpdateBrandRequest $request
     * @param $id
     *
     * @return \Illuminate\Http\RedirectResponse
     * @throws \App\Shop\Brands\Exceptions\UpdateDiscountCodesErrorException
     */
    public function update(UpdateBrandRequest $request, $id)
    {
//        $brand = $this->brandRepo->findBrandById($id);
//
//        $brandRepo = new BrandRepository($brand);
//        $brandRepo->updateBrand($request->all());
//
//        return redirect()->route('admin.brands.edit', $id)->with('message', 'Update successful!');
    }


    public function destroy()
    {}
}

`

updated

all my web route php:

/**
 * Admin routes
 */
Route::namespace('Admin')->group(function () {
    Route::get('admin/login', 'LoginController@showLoginForm')->name('admin.login');
    Route::post('admin/login', 'LoginController@login')->name('admin.login');
    Route::get('admin/logout', 'LoginController@logout')->name('admin.logout');
});
Route::group(['prefix' => 'admin', 'middleware' => ['employee'], 'as' => 'admin.' ], function () {
    Route::namespace('Admin')->group(function () {
        Route::group(['middleware' => ['role:admin|superadmin|clerk, guard:employee']], function () {
            Route::get('/', 'DashboardController@index')->name('dashboard');
            Route::namespace('Products')->group(function () {
                Route::resource('products', 'ProductController');
                Route::get('remove-image-product', 'ProductController@removeImage')->name('product.remove.image');
                Route::get('remove-image-thumb', 'ProductController@removeThumbnail')->name('product.remove.thumb');
            });
            Route::namespace('Customers')->group(function () {
                Route::resource('customers', 'CustomerController');
                Route::resource('customers.addresses', 'CustomerAddressController');
            });
            Route::namespace('Categories')->group(function () {
                Route::resource('categories', 'CategoryController');
                Route::get('remove-image-category', 'CategoryController@removeImage')->name('category.remove.image');
            });
            Route::namespace('Orders')->group(function () {
                Route::resource('orders', 'OrderController');
                Route::resource('order-statuses', 'OrderStatusController');
                Route::get('orders/{id}/invoice', 'OrderController@generateInvoice')->name('orders.invoice.generate');
            });
            Route::resource('addresses', 'Addresses\AddressController');
            Route::resource('countries', 'Countries\CountryController');
            Route::resource('countries.provinces', 'Provinces\ProvinceController');
            Route::resource('countries.provinces.cities', 'Cities\CityController');
            Route::resource('couriers', 'Couriers\CourierController');
            Route::resource('attributes', 'Attributes\AttributeController');
            Route::resource('attributes.values', 'Attributes\AttributeValueController');
            Route::resource('brands', 'Brands\BrandController');
            Route::resource('discounts', 'DiscountCodes\DiscountCodesController');
            Route::resource('comments', 'Comments\CommentsController');
            Route::resource('messages', 'Messages\MessagesController');
            Route::resource('pages', 'Pages\PagesController');
            Route::resource('blog-categories', 'BlogCategories\BlogCategoriesController');
            Route::resource('blog-posts', 'BlogPosts\BlogPostsController');
            Route::resource('scores-categories', 'ScoresCategories\ScoresCategoriesController');
            Route::resource('scores-levels', 'ScoresLevels\ScoresLevelsController');
            Route::resource('affiliate-categories', 'AffiliateCategories\AffiliateCategoriesController');
            Route::resource('products-codes', 'ProductsCodes\ProductsCodesController');
            Route::get('settings', 'SettingsController@edit')->name('admin.settings.edit');

        });
1
Check the output of php artisan route:list. Try running php artisan route:clear, too. - ceejayoz
updated my question. - S.M_Emamian
try Route::get('settings', 'yourcontroller@edit')->name('admin.settings.edit'); - Hassaan Ali
Is your route definition in a Route::group of some sort? - ceejayoz
@Indra Yeah. Figured I'd head off the follow-up question, though. - ceejayoz

1 Answers

1
votes

Your controller namespace is wrong.

namespace App\Http\Controllers\Admin\SettingsController;

Change it to:

namespace App\Http\Controllers\Admin\Settings;

and your route to:

Route::get('settings', 'Admin\Settings\SettingsController@edit')->name('admin.settings.edit');