Laravel: та же переменная не работает в другом представлении - PullRequest
0 голосов
/ 30 августа 2018

Если я использую переменные тесты, все работает:

Мой контроллер:

public function index()
{
    $row = Test::count();
    $tests = Test::latest()->paginate($row);
    return view('tests.index',compact('tests'));
}

public function show(Test $test)
{
    return view('tests.show', compact('test'));
}

Мой индексный просмотр:

@foreach($tests as $test)
   <div class="event">
     <h4 class="eventtitle text-j4y-dark">{{ $test->body }}</h4>
     <a href="{{ route('tests.show', $test->id) }}">Mehr lesen »</a>
   </div>
@endforeach

My Show-View:

<h4 class="eventtitle text-j4y-dark">{{ $test->body }}</h4>

но если я использую переменную event, страница индекса работает, так что она показывает мне все мои события, но если я нажимаю на одно событие для получения более подробной информации, это ничего не показывает, и ничего не работает, но я не знаю почему? один и тот же код только разные переменные?
Я не знаю что делать

Мой контроллер:

public function index()
{
    $row = Event::count();
    $events = Event::latest()->paginate($row);
    return view('tests.index',compact('events'));
}

public function show(Event $event)
{
    return view('tests.show', compact('event'));
}

Мой индексный просмотр:

@foreach ($events as $event)
  <div class="event">
    <h4 class="eventtitle text-j4y-dark">{{ $event->eventtitel }}</h4>
    <div class="date"><i class="far fa-calendar-alt"></i>{{ date("d.m.Y", strtotime($event->datum)) }}</div>
    <p class="eventtext" id="eventtext">{{ $event->eventbeschreibung }}</p>
    <a href="{{ route('tests.show', $event->id) }}">Mehr lesen »</a>
  </div>
@endforeach

My Show-View:

<div class="event">
  <h4 class="eventtitle">{{ $event->eventtite l}}</h4>
  <div class="date"><i class="far fa-calendar-alt"></i>{{ date("d.m.Y", strtotime($event->datum)) }}</div>
  <p class="eventtext" id="eventtext">{{ $event->eventbeschreibung }}</p>
</div>

если я использую dd ($ test), это показывает мне:

Test {#692 ▼
#fillable: array:1 [▶]
#connection: "mysql"
#table: null
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#attributes: array:4 [▶]
#original: array:4 [▶]
#changes: []
#casts: []
#dates: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: []
#touches: []
+timestamps: true
#hidden: []
#visible: []
#guarded: array:1 [▶]
 }

если я использую dd ($ event), это показывает мне:

Event {#660 ▼
#fillable: array:5 [▶]
+timestamps: false
#connection: null
#table: null
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: false
+wasRecentlyCreated: false
#attributes: []
#original: []
#changes: []
#casts: []
#dates: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: []
#touches: []
#hidden: []
#visible: []
#guarded: array:1 [▶]

}

если я использую событие echo $ в моем контроллере это показывает мне это: []

если я использую print_r ($ event)

это показывает мне это:

App\Event Object ( [fillable:protected] => Array ( [0] => firmenname [1] => eventtitel [2] => eventbeschreibung [3] => datum [4] => anhang ) [timestamps] => [connection:protected] => [table:protected] => [primaryKey:protected] => id [keyType:protected] => int [incrementing] => 1 [with:protected] => Array ( ) [withCount:protected] => Array ( ) [perPage:protected] => 15 [exists] => [wasRecentlyCreated] => [attributes:protected] => Array ( ) [original:protected] => Array ( ) [changes:protected] => Array ( ) [casts:protected] => Array ( ) [dates:protected] => Array ( ) [dateFormat:protected] => [appends:protected] => Array ( ) [dispatchesEvents:protected] => Array ( ) [observables:protected] => Array ( ) [relations:protected] => Array ( ) [touches:protected] => Array ( ) [hidden:protected] => Array ( ) [visible:protected] => Array ( ) [guarded:protected] => Array ( [0] => * ) ) 

1 Ответ

0 голосов
/ 30 августа 2018

Ну, есть много проблем с вашим кодом. Во-первых, это нумерация страниц.

$row = Event::count(); //This is basically counting all the events you have
$events = Event::latest()->paginate($row); // And here u telling to pageinit with all events in single page. 

Лично я не думаю, что это правильный путь. Если бы мне пришлось это сделать, я бы сделал так

 $events = Event::orderBy('created_at','desc')->get();  //This will allthe even in single page with the latest one. 

Если вам нужны только все события и сортировка не требуется, я бы сделал это так

 $events = Event::all(); //This is give all the events

Возвращаясь к вашему вопросу.

Переменная, определенная внутри метода контроллера, остается внутри этого метода, и представление, которое метод отображает. Он не пропускает другой блэйд до тех пор, пока вы не объявите его глобально в поставщике.

Для вашего случая я бы сделал что-то вроде этого

Маршрут

Route::get('events',['as'=>'events','uses'=>'ControllerName@index']);
Route::get('event/{id}',['as'=>'event.detail','uses'=>'ControllerName@show']);

Контроллер

public function index()
{
    $data['events'] = Event::orderBy('created_at','desc')->get(); 
    return view('tests.index',$data);
}

public function show($id)
{
  $data['eventDetail'] = Event::where('id',$id)->first();
  return view('tests.show',$data);
}

Индекс

@foreach ($events as $event)
  <div class="event">
    <h4 class="eventtitle text-j4y-dark">{{ $event->eventtitel }}</h4>
   <<CODE HERE MORE CODE >>
    <a href="{{route('event.detail',['id'=>$event->id]) }}">Mehr lesen »</a>
  </div>
@endforeach

Детальный просмотр события

<div class="event">
  <h4 class="eventtitle">{{ $eventDetail->eventtite l}}</h4>
  <div class="date"><i class="far fa-calendar-alt"></i>{{ date("d.m.Y", strtotime($eventDetail->datum)) }}</div>
  <p class="eventtext" id="eventtext">{{ $eventDetail->eventbeschreibung }}</p>
</div>

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...