@Rp76
@ali.bayat
ممنون
شاید پاسخ شما همینجا باشد
تو ویو صفحه اصلی وقتی اسلایدر داینامیک میکنم نمایش نمیده و ارور زیر برمیگردونه
Undefined variable: sliders (View: C:\xampp\htdocs\laravelpro\resources\views\slider.blade.php)
ویو
<div class="carousel-inner">
@foreach ($sliders as $slider)
<div class="carousel-item active">
<img src="{{ $slider->image }}" class="d-block w-100" alt="" height="400">
</div>
@endforeach
</div>
روت
Route::get('slider' , 'front\SliderController@index');
Route::get('slider/{slider}' , 'front\SliderController@single')->name('slider');
کنترلر
$sliders = Slider::get();
return view('slider' , compact('sliders'));
سلام
@ali.bayat
چرا بیایم یک blade بسازیم جایی که خواستیم include کنیم؟
راحت ترین کار اینه زیاد هم سختی نمیکشیم
البته شاید فقط نظر من باشه 😂
دستور کنسول :
php artisan make:component Rp76
هر کامپوننت یک ویو داره یک کنترلر به ادرس های :
app\View\Components\Rp76.php
resources\views\components\Rp76.blade.php
برای شما که فقط اسلایدر دارید باید اینکار رو کنید :
داخل سازنده این کامپوننت باید بیای اطلاعات خودت رو واکشی کنی ( من اطلاعات کلی کنترلر رو میذارم)
<?php
namespace App\View\Components;
use Illuminate\View\Component;
class Rp76 extends Component
{
public $gallery;
/**
* Create a new component instance.
*
* @return void
*/
public function __construct()
{
$this->gallery=Slider::All();
}
/**
* Get the view / contents that represent the component.
*
* @return \Illuminate\Contracts\View\View|string
*/
public function render()
{
return view('components.Rp76');
}
}
و ویو این کامپوننت میشه این
@foreach ($gallery as $img)
<div class="col-md-2 mx-2 col">
<div class="temp" style="background: url('{{asset($img)}}')"></div>
</div>
@endforeach
به این صورت هم فراخوانی میشه
<x-Rp76/>
اگر میخوای به این کامپوننت ورودی بدی باید به این صورت عمل کنی
به مثال زیر توجه کن :
// controller
<?php
namespace App\View\Components;
use Illuminate\View\Component;
class Rp76 extends Component
{
public $esm;
/**
* Create a new component instance.
*
* @return void
*/
public function __construct($name)
{
$this->esm=$name;
}
/**
* Get the view / contents that represent the component.
*
* @return \Illuminate\Contracts\View\View|string
*/
public function render()
{
return view('components.rp76');
}
}
// view
<div>
{{$esm}}
</div>
// نحوه استفاده
<x-Rp76 name="reza parisan" />
اگر اخر تگ html / نذاری ارور میده
@Rp76
ممنون از شما
من میخواستم اسلایدر به شکل یک ماژول باشه و براش ماژول تعریف کردم
این مواردی که فرمودید کنترلر و بخش اخر متوجه نشدم
بعد از اینکه کامپوننت تعریف کردم تو بخش اسلایدر برای اینه از دیتابیس بخونه این رو بزارم ؟
<x-Rp76 name="reza parisan" />
@Rp76
بله دوست عزیز من میدونم کامپوننت های view چی هستند
منتها با توجه به سوال مطرح شده، جوابی دادم که اجراش هم برای دوستمون راحت باشه
@ali.bayat
سلام فکر کنم بد برداشت کردین
فقط اون خط زیر اسمتون برای شما هست
بقیه اون ها در راستای سوال بود
@Rp76
من هم منظور بدی نداشتم
با توجه به تخصص دوستمون -> در حال یادگیری
ساده ترین راه رو بهشون معرفی کردم
که شما هم توضیحات کامل و خوبی درباره کامپوننت ها ارائه دادید
پیروز باشید
من موفق نشدم به جواب برسم و بیشتر سر درگم شدم
راه درست استفاده از کامپوننت ها هست ؟
من میخام روش درست استفاده کنم
و برای کامپوننت ها هم به مشکل خوردم و موفق نشدم
@Rp76
چیز بدرد بخوری پیدا نکردم متاسفانه
من کارایی که انجام دادمو میگم بی زحمت بگید اشتباهم کجاست
اول از همه یک ماژول اسلایدر ایجاد کردم و دیتابیس و ویو روت و مدل اکیه
بد طبق گفته شما کامپوننت slider ایجاد کردم تو ویو app
<?php
namespace App\View\Components;
use Illuminate\View\Component;
use Modules\Slider\Entities\front;
class Slider extends Component
{
/**
* Create a new component instance.
*
* @return void
*/
public function __construct()
{
$this->Slider::All();
}
/**
* Get the view / contents that represent the component.
*
* @return \Illuminate\View\View|string
*/
public function render()
{
return view('components.slider');
}
}
ویو کامپوننت
<section>
<div id="carouselExampleCaptions" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li data-target="#carouselExampleCaptions" data-slide-to="0" class="active"></li>
<li data-target="#carouselExampleCaptions" data-slide-to="1"></li>
<li data-target="#carouselExampleCaptions" data-slide-to="2"></li>
</ol>
<div class="carousel-inner">
@foreach ($sliders as $slider)
<div class="carousel-item active">
<img src="{{('$slider->image')}}" class="d-block w-100" alt="ابیسا" height="400">
</div>
@endforeach
<a class="carousel-control-prev" href="#carouselExampleCaptions" role="button" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">قبلی</span>
</a>
<a class="carousel-control-next" href="#carouselExampleCaptions" role="button" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">بعدی</span>
</a>
</div>
</section>
جایی که میخام اسلایدر نمایش بده اینجا نمیدونم چیکار کنم و یک ارور دارم
<x-slider/>
متن ارور
Undefined property: App\View\Components\Slider::$Slider (View: C:\xampp\htdocs\laravelpro\resources\views\index.blade.php)
بدون استفاده از کامپوننت تونستم اسلایدر داینامیک کنم
ولی عکس ها عوض نمیشه ........... فقط عکس اول نمایش میده