Маршрут [/ createhotel] не определен. Laravel 5.4 - PullRequest
0 голосов
/ 04 мая 2018

Это моя страница просмотра индекса.

@extends('layouts.app')

<!DOCTYPE html>
<html lang="en">
<head>
<link href="css/hotel.css" rel="stylesheet" type="text/css"/>

</head>
<body>

@section('content')
<h2>Hotels</h2>

<div class="container-fluid sug-1">
    <div class="ui_column is-12 h1 ui_header sug-1head">{{ $data[0]->city}}&nbsp;
    </div>
<div style="display:flex; flex-direction: row; justify-content: center; align-items: center">   

@for ($i = 0; $i < 4; $i++)

  <div  class= "img__wrap">
  <form method="get" action="/hotel/viewpost.blade.php"> 
    <a href="/hotel/viewpost/{{$data[$i]->id }}"><img class = "img__img" src={{asset($data[$i]->image)}} alt="Logo" style="width:90%;height:90%" ></a>
    <p class = "img__description"> {{$data[$i]->name}} <br> {{$data[$i]->rating}}<br> {{$data[$i]->price}}</p>
  </form>
      </div>
@endfor

 <input class="sug1btn"  type=Button id="allsugbtn" onclick="findHotels();" value="See all"/>

</div>

@endsection

</body>
</html>

Это контроллер для моего индекса:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HotelController extends Controller
{
   public function index()
   {
        $hotelData['data'] = \DB::table('hotels')->get();
        if(count($hotelData) > 0)
        {
            return view("hotel.index",$hotelData);
        }
        else
        {
            return view("hotel.index");
        }
   } 


}

Я создал маршрут из моего индекса в точку просмотра, то есть следующий код:

@extends('layouts.app')

<!DOCTYPE html>
<html lang="en">
<head>
      <link href="css/hotel.css" rel="stylesheet" type="text/css"/>



</head>
<body>

@section('content')

<div class="container-fluid sug-1">
    <div class="ui_column is-12 h1 ui_header sug-1head">
    </div>
<div style="display:flex; flex-direction: row; justify-content: left; align-items: left">   

 <div class="card">
  <img src={{asset($data->image)}} alt="Image" style="width:100%">
  <div class="container">
    <h4><b>{{$data->name}}</b></h4> 
    <p>Rating: {{$data->rating}}<br>Price: {{$data->price}}</p> 
  </div>
</div>

 <button href="{{ route('/createhotel') }}" type="button" class="btn btn-default">Left</button>
</div>

<h2>Reviews</h2>

@foreach ($reviews as $review)
    <p>{{ $review->user_name }}<br>{{ $review->description }}</p>
    <br><br><br>

@endforeach

@endsection

</body>
</html>

Это HotelPostController для моего окна просмотра и createhotel:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HotelPostsController extends Controller
{
    public function show($hotelviewid)
   {
        $imagedata['data'] = \DB::table('hotels')->select('id','image','name','city','rating','price' )->where('id', $hotelviewid)->first();

        $reviewdata['reviews'] = \DB::table('hotel_reviews')->where('hotel_id', $hotelviewid)->get();


        return view("hotel.viewpost",$imagedata,$reviewdata);
   }

   public function createhotel()
   {
        return view("hotel.createhotel");
   }
}

Это файл маршрутов web.php:

Route::get('/', 'HotelController@index');
Route::get('/hotel', 'HotelController@index');
Route::get('/hotel/viewpost/{hotelviewid}', 'HotelPostsController@show');
Route::get('travelapp.me/hotel/viewpost/createhotel, 'HotelPostsController@createhotel');

Проблема, с которой я сталкиваюсь, заключается в том, что в папке представлений я создал подпапку с именем отеля, в ней есть 3 файла index, viewpost и createhotel. первая страница является индексной, и когда пользователь нажимает на какое-либо сообщение, оно открывается в viewpost. Теперь оттуда я хочу создать кнопку, которая переходит на третью страницу, т. Е. Creathotel. Я создал функцию в контроллере и добавил маршруты, но она выдает ошибку неопределенных маршрутов.

Ответы [ 4 ]

0 голосов
/ 04 мая 2018

Изменение

Route::get('travelapp.me/hotel/viewpost/createhotel, 'HotelPostsController@createhotel');

до

Route::get('/hotel/viewpost/createhotel, 'HotelPostsController@createhotel');

И ваша кнопка для перехода на страницу создания:

<a href="{{url('/hotel/viewpost/createhotel')}}">Create Hotel</a>

Метод url() автоматически предоставит вам полный URL. Вам просто нужно создать URL из корня (/), и вам не нужно прикреплять полный домен.

Вы можете сделать это (просто пример)

Route::get('/hotel-create, 'HotelPostsController@createhotel');

и кнопка для перехода на эту страницу

 <a href="{{url('/hotel-create')}}">Create Hotel</a>

Теперь в этом примере, когда вы нажмете на ссылку «Создать отель», будет вызван метод createhotel() из HotelPostsController контроллера.
Обновление:
Проблема
В вашем контроллере вы не передаете данные в представление

public function createhotel()
{
     return view("hotel.createhotel");
}

Так как же получить доступ к переменной $ data в

<img src={{asset($data->image)}} alt="Image" style="width:100%">

Решение: (передать ваши данные в шаблон)

public function createhotel()
{
    $imagedata['data'] = \DB::table('hotels')->select('id','image','name','city','rating','price' )->where('id', $hotelviewid)->first();

     $reviewdata['reviews'] = \DB::table('hotel_reviews')->where('hotel_id', $hotelviewid)->get();
     return view("hotel.createhotel",$imagedata,$reviewdata);
 }
0 голосов
/ 04 мая 2018

в вашем значении действия индекса заполнено страницей представления, и это кажется неправильным

<form method="get" action="/hotel/viewpost.blade.php">

и в viewpost вам нужно изменить {{route ("/ create")}} на {!! маршрут ( "создать") !!}

0 голосов
/ 04 мая 2018
Route::get('/hotel/create', 'HotelReviewController@create')->name('create');

изменить на

 Route::get('/hotel/create', 'HotelReviewController@create')->name('createhotel');

это будет работать, я надеюсь. Вы используете именованный маршрут, прочитайте здесь о маршрутизации. https://laravel.com/docs/5.6/routing#named-routes

0 голосов
/ 04 мая 2018

Вспомогательный метод route() принимает имя в качестве параметра, а не фактический маршрут.

route('create') это то, что вы хотите. Чтобы использовать URL, url('/hotel/create').

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