магазин в таблице, Laravel - PullRequest
0 голосов
/ 07 мая 2018

У меня проблема с хранением данных в таблице. И после нескольких часов я все еще не мог понять, в чем проблема. Я был бы так рад за помощь!

WishlistController.php:

public function store($book_id)
    {
        $user_id=Auth::id();
        $wishlist=new Wishlist;
        $wishlist->book_id=$book_id;
        $wishlist->user_id= $user_id;
        $wishlist->save();
        return redirect()->route('wishlistCRUD.show' , $book_id->id)
            ->with('success', 'Buch gewünscht');

Модель:

class Wishlist extends Model
{
    public $table = 'wishlist';
    public $fillable = ['book_id','user_id',];

view.blade:

{!! Form::open(array('route' => 'wishlistCRUD.store', 'method'=>'POST')) !!}
  <form action="someaction" method="POST">
      <input type="hidden" name="book_id" value="{{$book->id}}"/>
  </form>    
<a class="btn btn-primary" href="{{ route('wishlistCRUD.store',$book->id) }}">wünschen</a>
{!! Form::close() !!}

Маршрут:

Route::post('wishlistCRUD.store', 'WishlistController@store');

Когда я проверяю таблицу, ничего нового не добавляется. Его разочарование: - (

Ответы [ 4 ]

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

Попробуйте сделать это. В вашем контроллере вам не нужен $ book_id в качестве параметра, потому что вы можете получить его из $ request:

public function store(Request $request)
{
    $user_id = Auth::id();
    $book_id = $request->book_id;

    $wishlist = new Wishlist;
    $wishlist->book_id = $book_id;
    $wishlist->user_id = $user_id;
    $wishlist->save();

    return redirect()->route('wishlistCRUD.show' , $book_id)
            ->with('success', 'Buch gewünscht');
}

Не забудьте добавить use Illuminate\Http\Request;

И тогда в вашем блейде вам не нужно устанавливать маршрут в привязке, потому что он уже определен в форме. И вам не нужны две формы, потому что Form::open уже делает это:

{!! Form::open(array('route' => 'wishlistCRUD.store', 'method'=>'POST')) !!}
  {{ csrf_field() }}
      <input type="hidden" name="book_id" value="{{$book->id}}"/>
  {!! Form::submit('wünschen') !!}
{!! Form::close() !!}

Это должно сработать.

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

В лезвии измените <a class="btn btn-primary" href="{{ route('wishlistCRUD.store',$book->id) }}">wünschen</a>

до <button class="btn btn-primary" type="submit">wünschen</button>

Удалите тег form, это не обязательно. Вы объявили это с {!! форма: открыть ... !!}

Вы пытаетесь получить доступ к route('wishlistCRUD.store',$book->id) с помощью GET с помощью <a></a>

Попробуйте это: view.blade:

{!! Form::open(['url' => 'wishlistCRUD/store', 'method' => 'POST']) !!} 
    <input type="hidden" name="book_id" value="{{$book->id}}"/> 
    <button class="btn btn-primary" type="submit">wünschen</button> 
{!! Form::close() !!}

Маршрут:

Route::post('wishlistCRUD/store', 'WishlistController@store');
0 голосов
/ 07 мая 2018

Вы создали POST метод в своем web.php для добавления книги в список желаний, в своем шаблоне клинка вы должны отправить скрытую форму при нажатии на ссылку.

в вашем web.php

Route::get('wishlistCRUD/book/{book_id}','WishlistController@get_book_by_id')->name('get_book_by_id');

    Route::post('wishlistCRUD.store', 'WishlistController@store')->name('store');

В вашем шаблоне клинка

<a class="btn btn-primary" href="javascript:void(0)" onclick="event.preventDefault();document.getElementById('addToWishlist').submit();">wünschen</a>

<form style="display:none" id="addToWishlist" method="POST" action="{{ route('store')}}">{{csrf_field()}} <input type="hidden" name="bookid" value="{{$book->id}}" /> </form>

в вашем контроллере

public function store(Request $request){
        $bookID= $request->input('bookid');
        $wishlist=new Wishlist();
        $wishlist->book_id= $bookID
        $wishlist->user_id= Auth::user()->id;
        $wishlist->save();
        return redirect()->route('get_book_by_id', ['book_id' => $bookID]);
}


public function get_book_by_id(Request $request,$book_id){
     // find book by ID;

     $book=Book::find($book_id);

     // book found 
     if($book){

       return view('book')->with('book',$book);

     }else{

      // book not found , redirect to 404 page or home page
       return redirect('/');
     }
}
0 голосов
/ 07 мая 2018

Просто измените сообщение, чтобы попасть в эту строку:

    Route::post('wishlistCRUD.store', 'wishlistCRUD@store');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...