راکت
حل شده

خطای Undefined variable tags

10 پاسخ

درود دوستان...
با دستور foreach خطا می دهد که میگه tags موجود نیست:

<div class="form-group">
 <label class="col-form-label" for="option1">برچسب ها</label>
    <select class="form-control" id="js" multiple="multiple" name="tags[]">
        @foreach ($tags as $tag)
               <option value="{{ $tag->id }}">{{ $tag->name }}</option>
         @endforeach
   </select>
</div>
ثبت پرسش جدید

پاسخ‌ها

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

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

بهترین پاسخ

درود دوستان...
مشکل حل شد.
پس از جستجو بسیار کد باید به شکل زیر باشد:
فراخوانی مدل Tag:

use App\Tag;

کد ایندکس:

public function create()  
{  
$tags = Tag::all();  
return view('discuss.create',compact('tags'));  
}
وحید رضازاده
وحید رضازاده
@vahidrezazadeh

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

@RaymondDragon
سلام
خب اینجوری که مشحص نیست . باید کد کنترلر رو هم بذارین
احتمالا tags رو درست نفرستادین به view

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

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

@vahidrezazadeh
درود...

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Tag;

class TagController extends Controller
{
    public function index()
    {
        $tags = Tag::all();
        return view('tags.index') -> withTags($tags);
    }

    public function store(Request $request)
    {
        $this -> validate($request, array(
            'name' => 'required | max:50',
        ));

        $tags = New Tag;
        $tags -> name = $request -> name;
        $tags -> save();

        return redirect() -> route('tags.index', $tags->id) -> withMessage('برچسب شما با موفقیت ایجاد شد!');
    }

    public function edit($id)
    {
        $tags = Tag::find($id);
        return view('tags.edit') -> withTags($tags);
    }

    public function update(Request $request, $id)
    {
        $this -> validate(
            $request, array(
            'name' => 'required | max:50',
        )
    );

        $tags = Tag::find($id);
        $tags -> name = $request -> input('name');
        $tags -> save();

        return redirect() -> route('tags.index', $tags->id) -> withMessage('برچسب شما با موفقیت ویرایش شد!');
    }

    public function destroy($id)
    {
        $tags = Tag::find($id);
        $tags -> delete();

        return redirect()-> route('tags.index') -> withMessage('برچسب شما با موفقیت حذف شد.');
    }
}

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

وحید رضازاده
وحید رضازاده
@vahidrezazadeh

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

@RaymondDragon
کد ایندکس رو به این صورت بنویس
من این فرمتی که شما نوشتی ندیدم تا حالا

    public function index()
    {
        $tags = Tag::all();
        return view('tags.index',compact('tags'));
    }
رایموند
رایموند
@Raymond

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

@vahidrezazadeh

درود...
کار نکرد ...

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

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

کسی نیست بگه...

Masiht
Masiht
@masiht

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

سلام @RaymondDragony جان !

ببینم با کامپکت اون متغیر را به اون ویو فرستادید ؟

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

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

@masiht
آره فرستادم ولی کار نکرد...

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Tag;

class TagController extends Controller
{
    public function index()
    {
        $tags = Tag::all();
        return view('tags.index',compact('tags'));
    }

    public function create()
    {
        $tags = Tag::all();
        return view('tags.create',compact('tags'));
    }

    public function store(Request $request)
    {
        $this -> validate($request, array(
            'name' => 'required | max:50',
        ));

        $tags = New Tag;
        $tags -> name = $request -> name;
        $tags -> save();

        return redirect() -> route('tags.index', $tags->id) -> withMessage('برچسب شما با موفقیت ایجاد شد!');
    }

    public function show($id)
    {
        $tags = Tag::find($id);
        return view('tags.show',compact('tags'));
    }

    public function edit($id)
    {
        $tags = Tag::find($id);
        return view('tags.edit',compact('tags'));
    }

    public function update(Request $request, $id)
    {
        $this -> validate(
            $request, array(
            'name' => 'required | max:50',
        )
    );

        $tags = Tag::find($id);
        $tags -> name = $request -> input('name');
        $tags -> save();

        return redirect() -> route('tags.index', $tags->id) -> withMessage('برچسب شما با موفقیت ویرایش شد!');
    }

    public function destroy($id)
    {
        $tags = Tag::find($id);
        $tags -> delete();

        return redirect()-> route('tags.index') -> withMessage('برچسب شما با موفقیت حذف شد.');
    }
}
رایموند
رایموند
@Raymond

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

اینم دیتابیس:

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateDiscussTagTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('discuss_tag', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('discuss_id')->unsigned();
            $table->integer('tag_id')->unsigned();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('discuss_tag');
    }
}
رایموند
رایموند
@Raymond

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

درود دوستان...
کسی نمی تونه این مشکل رو حل کنه؟
سیستم برچسب گذاری ساخته شده ولی مشکل اینه که نمی تونه به سیستم برچسب گذاری ارتباط برقرار کنه...
اینم رابطه Many to Many که ایجاد شده:
Tag.php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Tag extends Model
{
    public function discusses()
    {
        return $this->belongsToMany('App\Discuss');
    }
}

Discuss.php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Discuss extends Model
{
    public function tags()
    {
        return $this->belongsToMany('App\Tag');
    }
}

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

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