سلام دوستان به یه مشکلی خوردم در لاراول 8
من با cmd کنترلر خودمو ساختم و کد های لازم رو زدم (همین کد ها در لاراول 7 کار می کنه) اما این ارور میده(تصویر بالا)
و اینکه اگه فایل ایجاد شده برای کنترلر ها رو دستی پاک کنیم مشکل داره؟!! یا باید چجوری کنترلر ها رو پاک کنیم
@hesammousavi
@nimageneral
@mhyeganeh
@milad
@endworld
@hosseinshirinegad98
سلام دوست عزیز
یکی از تغییراتی که در لاراول ۸ صورت گرفته، نحوه فراخوانی توابع action در کنترلر هاست. در نسخه های قبل تر لاراول فراخوانی توابع action به شکل زیر انجام میشد:
Route::get(‘/users’, ‘UserController@index’);
اما در نسخه ٨ فراخوانی توابع action به شکل زیر انجام میشود:
use App\Http\Controllers\UserController;
Route::get('/users', [UserController::class, 'index']);
اگر روش قبلی موجود در ورژن های قبلی لاراول را ترجیح میدهید، میتوانید $nameSpace را به عنوان یک متغیر کلاسی در RouteServiceProvider اضافه کنید و اینطور که از ارور تون پیداست احتمالا فایل کنترلر Home رو حذف کردید و در routing پروژه تون نمیتونه کنترلرشو پیدا کنه که باید ویرایشش کنید.
@moeinbabaei
سلام.
خیر مشکلی نداره دستی پاک کنید.
برا ارور هم نحوه فراخوانی هاتون رو باید مشخص کنید . ارور مربوط به ioc container هست. در واقع کلاسی هست که لاراول به هر دلیل نتونسته بصورت اتوماتیک ازش آبجکت بسازه ( معمولا این مشکل از آدرس دهی ها پیش میاد ). باید کدتون رو قرار بدید که بشه راهنمایی کرد.
سلام دوست عزیز
یکی از تغییراتی که در لاراول ۸ صورت گرفته، نحوه فراخوانی توابع action در کنترلر هاست. در نسخه های قبل تر لاراول فراخوانی توابع action به شکل زیر انجام میشد:
Route::get(‘/users’, ‘UserController@index’);
اما در نسخه ٨ فراخوانی توابع action به شکل زیر انجام میشود:
use App\Http\Controllers\UserController;
Route::get('/users', [UserController::class, 'index']);
اگر روش قبلی موجود در ورژن های قبلی لاراول را ترجیح میدهید، میتوانید $nameSpace را به عنوان یک متغیر کلاسی در RouteServiceProvider اضافه کنید و اینطور که از ارور تون پیداست احتمالا فایل کنترلر Home رو حذف کردید و در routing پروژه تون نمیتونه کنترلرشو پیدا کنه که باید ویرایشش کنید.
درود...
توی کنترلر HomeController.php تابع این شکل تعریف شده:
public function index()
{
return view('home');
}
بخواهید home در صفحه رندر و مشاهده بشه باید فایل مورد نظر home.blade.php در پوشه views وجود داشته باشه و همچون روت برای آن تعریف شده باشه:
Route::get('/', [HomeController::class, 'index'])->name('home');
خیلی ممنون از دوستان عزیز مشکلم حل شد دمتون گرم بله درست گفتین تو لاراول 8 فرق می کنه با 7
@SobhanDadkhah
@faridvatani
@endworld
دوستان کسی می تونه این کد رو تبدیل کنه به کدی که با لاراول 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
شما کافیه که تمام ساب روت هاتون رو بصورت زیر تغییر بدید
Route::get('/articles' , [ArticleController::class, 'index']);
@nimageneral
نیما جان اینو دوستان گفتن من منظورم اینه چه شکلی تو تابع بزاریم و گروپ کنیم شون
فکر کنم مظور شما resource Controller باشه که کلا بحثش جداست و شما باید یک کنترلر از نوع resource ایجاد کنید بصورت زیر که تمام ساب روت ها رو خودش ایجاد میکنه
php artisan make:controller PhotoController --resource
سلام دوستان هنگام رفتن به صفحه 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>
ممنون میشم راهنمایی کنید
@545seta5dareh
مشکل مربوط میشه به خط ۱۱ کنترلرتون.
این رو:
$post=Post::query()->where('slug',$slug);
تبدیل کنید به این:
$post=Post::query()->where('slug',$slug)->first();
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟