Paradox
4 سال پیش توسط Paradox مطرح شد
13 پاسخ

نمایش اسلایدر فقط در صفحه اصلی

سلام وقتتون بخیر
من میخام اسلایدر فقط صفحه اول نمایش بده و در صفحات دیگه تکرار نشه
از چه کدی باید استفاده کرد ؟


ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
0

کد های اسلایدر رو بذار توی یه blade جدا
و جاهایی که میخواهی داشته باشیش از include استفاده کن

@include('slider')

رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 4 سال پیش مطرح شد
0

خب نذارش داخل master
به همین راحتی


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
0

کد های اسلایدر رو بذار توی یه blade جدا
و جاهایی که میخواهی داشته باشیش از include استفاده کن

@include('slider')

Paradox
تخصص : در حال یادگیری
@paradox 4 سال پیش مطرح شد
Paradox
تخصص : در حال یادگیری
@paradox 4 سال پیش آپدیت شد
0

@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'));

رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 4 سال پیش مطرح شد
1

سلام
@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/>

نکته

اگر میخوای به این کامپوننت ورودی بدی باید به این صورت عمل کنی

  1. توی کنترلر چند تا متغیر سراسری تعریف کنی
  2. بعد به عنوان ورودی تابع سازنده چندتا متغیر بیگیری و اون هارو بریزی توی متغیر های سراسری که داشتی
  3. بعد این متغیر های سراسری که ساختی توی ویو کامپوننت قابل دسترس هستند و میتونی استفاده کنی
  4. وقتی هم خواستی اون متغیر هارو پر کنی باید به همون اسمی که داخل تابع سازنده ورودی گرفتی توی تگ html اون کامپوننت اون هارو پر کنی

به مثال زیر توجه کن :

// 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 / نذاری ارور میده


Paradox
تخصص : در حال یادگیری
@paradox 4 سال پیش مطرح شد
0

@Rp76
ممنون از شما
من میخواستم اسلایدر به شکل یک ماژول باشه و براش ماژول تعریف کردم

این مواردی که فرمودید کنترلر و بخش اخر متوجه نشدم
بعد از اینکه کامپوننت تعریف کردم تو بخش اسلایدر برای اینه از دیتابیس بخونه این رو بزارم ؟

<x-Rp76 name="reza parisan" />

علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
1

@Rp76
بله دوست عزیز من میدونم کامپوننت های view چی هستند
منتها با توجه به سوال مطرح شده، جوابی دادم که اجراش هم برای دوستمون راحت باشه


رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 4 سال پیش مطرح شد
1

@ali.bayat
سلام فکر کنم بد برداشت کردین
فقط اون خط زیر اسمتون برای شما هست
بقیه اون ها در راستای سوال بود


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
0

@Rp76
من هم منظور بدی نداشتم
با توجه به تخصص دوستمون -> در حال یادگیری
ساده ترین راه رو بهشون معرفی کردم

که شما هم توضیحات کامل و خوبی درباره کامپوننت ها ارائه دادید
پیروز باشید


Paradox
تخصص : در حال یادگیری
@paradox 4 سال پیش مطرح شد
0

من موفق نشدم به جواب برسم و بیشتر سر درگم شدم
راه درست استفاده از کامپوننت ها هست ؟
من میخام روش درست استفاده کنم
و برای کامپوننت ها هم به مشکل خوردم و موفق نشدم


رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 4 سال پیش مطرح شد
0

برو سرچ کن ببین کامپوننت ها چطور کار میکنند بعدا میتونی مشکلت رو حل کنی
من یک توضیح کامل دادم
اگر کارساز نبود از یک اموزش تصویری استفاده کن


Paradox
تخصص : در حال یادگیری
@paradox 4 سال پیش مطرح شد
0

@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)

Paradox
تخصص : در حال یادگیری
@paradox 4 سال پیش مطرح شد
0

بدون استفاده از کامپوننت تونستم اسلایدر داینامیک کنم
ولی عکس ها عوض نمیشه ........... فقط عکس اول نمایش میده


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

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