Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Laravel 5.x » Связь "производитель - марка" как сделать форму? » 04.02.2017 16:44:39

DerAlSem
Ответов: 1

Здравствуйте.

Вопросы нубские, только-только начал изучать ларавел.

Есть модель CarMake - производители машин. В index.blade:

@extends('master')
@section('title', 'Производители машин')
@section('content')

    <div class="container col-md-12"> {{--col-md-offset-2--}}
        <div class="panel panel-default">
            <div class="panel-heading">
                <h2> Производители машин </h2>
            </div>
            @if (session('status'))
                <div class="alert alert-success">
                    {{ session('status') }}
                </div>
            @endif
           @if ($carmakes->isEmpty())
                <p> Производителей машин пока нет.</p>
                <p> Печаль.</p>
            @else
                <table class="table table-hover">
                    <thead>
                    <tr>
                        <th>ID</th>
                        <th>Производитель</th>
                    </tr>
                    </thead>
                    <tbody>
                    @foreach($carmakes as $carmake)
                        <tr onclick="window.document.location='/carmake/{!! $carmake->id !!}'">
                            <td>{!! $carmake->id !!}</td>
                            <td>{!! $carmake->Make !!}</td>

                        </tr>
                    @endforeach
                    </tbody>
                </table>
            @endif
        </div>
        <a href="/carmake/create" class="btn btn-info">Новый</a>
    </div>

@endsection 

Есть модель CarModel - марки производителей.

Что хочу - при клике на строку в индексной таблице открывается show.blade этого прозводителя, дальше таблица с моделями этого прозводителя и ниже форма добавить новую модель.

До таблицы пока дело не дошло, ругается, что $carmodel не найдена.

Вот show.blade

@extends('master')
@section('title', 'Модели')

@section('content')
    <div class="container col-md-8 col-md-offset-2">
        <div class="col-md-2">
            <span>{!! $carmake->id !!}</span> <a href="{!! action('CarMakesController@edit', $carmake->id) !!}" class="btn btn-info">Редактировать</a>
        </div>
        {!! Form::model($carmodel, ['action' => 'CarModelsController@create', 'method' => 'post', 'class' => 'form-horizontal']) !!}
        @foreach ($errors->all() as $error)
            <p class="alert alert-danger">{{ $error }}</p>
        @endforeach
        @if (session('status'))
            <div class="alert alert-success">
                {{ session('status') }}
            </div>
        @endif
        <input type="hidden" name="car_make_id" value="{!! $carmake->id !!}">
        <fieldset>
            <legend>Новая модель</legend>
            <div class="form-group">
                {!! Form::label('Model', 'Модель', ['class' => 'col-md-2 control-label']) !!}
                <div class="col-md-10">
                    {!! Form::text('Model', '2110', ['class' => 'form-control']) !!}
                </div>
            </div>
            <div class="form-group">
                <div class="col-lg-10 col-lg-offset-2">
                    <button class="btn btn-default">Отмена</button>
                    <button class="btn btn-primary" type="submit">Сохранить</button>
                </div>
            </div>
        </fieldset>
        {!! Form::close() !!}
    </div>
@endsection

Вот контроллер CarMake:

<?php

namespace App\Http\Controllers;

use App\Http\Requests\CarMakeFormRequest;
use Illuminate\Http\Request;

use App\CarMake;
use App\CarModel;

class CarMakesController extends Controller
{
    public function index()
    {
        $carmakes = CarMake::all(); //
        return view('carmakes.index', compact('carmakes'));
    }

    public function create()
    {
        $carmake = new CarMake;
        return view('carmakes.create', ['carmake' => $carmake ]);
    }

    public function store(CarMakeFormRequest $request)
    {
        $carmake = new CarMake(array(
            'Make' => $request->get('Make')
        ));

        $carmake->save();

        return redirect('/carmakes')->with('status', 'Производитель '. $request->get('Make').' успешно добавлен в БД.');
    }

    public function show($id)
    {
        $carmake = CarMake::whereid($id)->firstOrFail();
        $carmodel = new CarModel;
        return view('carmakes.show', compact('carmake'));
    }

    public function edit($id)
    {
        $carmake = CarMake::whereid($id)->firstOrFail();
        return view('carmakes.edit', compact('carmake'));
    }

    public function update($id, CarMakeFormRequest $request)
    {
        $carmake = CarMake::whereid($id)->firstOrFail();
        $carmake->Make = $request->get('Make');
        $carmake->save();
        return redirect(action('CarMakesController@edit', $carmake->id))->with('status', 'Данные сохранены!');
    }

    public function destroy($id)
    {
        $carmake = CarMake::whereid($id)->firstOrFail();
        $carmake->delete();
        return redirect('/carmakes')->with('status', 'Производитель удалён!');
    }
}

В общем, как передать $carmodel?

Подвал раздела