راکت
حل شده

چرا کنترلر رو نشون نمیده- لاراول 8

12 پاسخ

توضیح تصویر رو وارد کنید

سلام دوستان به یه مشکلی خوردم در لاراول 8
من با cmd کنترلر خودمو ساختم و کد های لازم رو زدم (همین کد ها در لاراول 7 کار می کنه) اما این ارور میده(تصویر بالا)
و اینکه اگه فایل ایجاد شده برای کنترلر ها رو دستی پاک کنیم مشکل داره؟!! یا باید چجوری کنترلر ها رو پاک کنیم
@hesammousavi
@nimageneral
@mhyeganeh
@milad
@endworld
@hosseinshirinegad98

ثبت پرسش جدید

پاسخ‌ها

12
فرید وطنی
فرید وطنی
@faridvatani

تخصص: Software Developer

بهترین پاسخ

سلام دوست عزیز
یکی از تغییراتی که در لاراول ۸ صورت گرفته، نحوه فراخوانی توابع action در کنترلر هاست. در نسخه های قبل تر لاراول فراخوانی توابع action به شکل زیر انجام می‌شد:

Route::get(‘/users’, ‘UserController@index’);

اما در نسخه ٨ فراخوانی توابع action به شکل زیر انجام می‌شود:

use App\Http\Controllers\UserController;
Route::get('/users', [UserController::class, 'index']);

اگر روش قبلی موجود در ورژن های قبلی لاراول را ترجیح می‌دهید، می‌توانید $nameSpace را به عنوان یک متغیر کلاسی در RouteServiceProvider اضافه کنید و اینطور که از ارور تون پیداست احتمالا فایل کنترلر Home رو حذف کردید و در routing پروژه تون نمیتونه کنترلرشو پیدا کنه که باید ویرایشش کنید.

سبحان دادخواه
سبحان دادخواه
@SobhanDadkhah

تخصص: دانشجوی برنامه نویسی :)

@moeinbabaei
سلام.
خیر مشکلی نداره دستی پاک کنید.
برا ارور هم نحوه فراخوانی هاتون رو باید مشخص کنید . ارور مربوط به ioc container هست. در واقع کلاسی هست که لاراول به هر دلیل نتونسته بصورت اتوماتیک ازش آبجکت بسازه ( معمولا این مشکل از آدرس دهی ها پیش میاد ). باید کدتون رو قرار بدید که بشه راهنمایی کرد.

رایموند
رایموند
@Raymond

تخصص: مختصص وردپرس - برنامه نویس لاراول

درود...
توی کنترلر HomeController.php تابع این شکل تعریف شده:

public function index()
{
    return view('home');
}

بخواهید home در صفحه رندر و مشاهده بشه باید فایل مورد نظر home.blade.php در پوشه views وجود داشته باشه و همچون روت برای آن تعریف شده باشه:

Route::get('/', [HomeController::class, 'index'])->name('home');

شاید پاسخ شما همین‌جا باشد

محمد معین بابائی
محمد معین بابائی
@moeinbabaei

تخصص: Web developer

خیلی ممنون از دوستان عزیز مشکلم حل شد دمتون گرم بله درست گفتین تو لاراول 8 فرق می کنه با 7
@SobhanDadkhah
@faridvatani
@endworld

محمد معین بابائی
محمد معین بابائی
@moeinbabaei

تخصص: Web developer

دوستان کسی می تونه این کد رو تبدیل کنه به کدی که با لاراول 8 هم خونی داشته باشه (این کد برای لاراول 7 هستش)

Route::prefix('admin')->namespace('Admin')->group(function() {
    Route::get('/articles' , 'ArticleController@index');
    Route::get('/articles/create' , 'ArticleController@create');
    Route::post('/articles/create','ArticleController@store');
    Route::get('/articles/{id}/edit' , 'ArticleController@edit');
    Route::put('/articles/{id}/edit' , 'ArticleController@update');
    Route::delete('/articles/{id}' , 'ArticleController@delete');

});

@SobhanDadkhah
@faridvatani
@endworld
@hesammousavi
@nimageneral

نیما  ش
نیما ش
@nimageneral

تخصص: برنامه نویس وب

شما کافیه که تمام ساب روت هاتون رو بصورت زیر تغییر بدید

Route::get('/articles' , [ArticleController::class, 'index']);
محمد معین بابائی
محمد معین بابائی
@moeinbabaei

تخصص: Web developer

@nimageneral
نیما جان اینو دوستان گفتن من منظورم اینه چه شکلی تو تابع بزاریم و گروپ کنیم شون

نیما  ش
نیما ش
@nimageneral

تخصص: برنامه نویس وب

فکر کنم مظور شما resource Controller باشه که کلا بحثش جداست و شما باید یک کنترلر از نوع resource ایجاد کنید بصورت زیر که تمام ساب روت ها رو خودش ایجاد میکنه

php artisan make:controller PhotoController --resource
فرزاد بنده علی
فرزاد بنده علی
@545seta5dareh

سلام دوستان هنگام رفتن به صفحه post با خطای زیر مواجه می شمتوضیح تصویر رو وارد کنید

کد زیر مربوط به صفحه PostController هست

<?php

namespace App\Http\Controllers;

use App\Models\Post;

class PostController extends Controller
{
    public function show($slug)
    {
        $post=Post::query()->where('slug',$slug);
        return view('post',[
                'post'=>'$post'
            ]);
    }
}

کد زیر هم مربوط به صفحه post هست

<div class="sn-content">
                        <h1 class="sn-title">{{$post->title}}</h1>
                       {{$post->body}}
                    </div>

ممنون میشم راهنمایی کنید

محمدحسن فرهادی
محمدحسن فرهادی
@farhadi

تخصص: علاقه مند به کد نویسی

@nimageneral نحوه روت دادن به فایل ریسورس هم تغییر کرده تو لاراول 8؟

afshin
afshin
@afshin

تخصص: فول استک دولوپر

تا میایم به یه چیزی عادت کنیم خرابش میکنن

محمدحسن یگانه
محمدحسن یگانه
@mhyeganeh

تخصص: Full-Stack Web Developer Freelancer

@545seta5dareh
مشکل مربوط میشه به خط ۱۱ کنترلرتون.
این رو:

$post=Post::query()->where('slug',$slug);

تبدیل کنید به این:

$post=Post::query()->where('slug',$slug)->first();

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام