在创建函数中找不到Laravel页面

时间:2018-08-13 16:15:13

标签: laravel laravel-5.6

最近,我开始使用Laravel作为框架进行编程。一切正常,但我尝试在运行时使用以下消息编写创建脚本:

  

对不起,找不到您要查找的页面。

那是在“创建”表单中发布“接受”之后,我已经成功创建了索引,显示,更新和删除功能。所以到我的控制器的路由是正确的,文件存在...我完全被卡住了,看不到什么不正确。

请帮助。

我没有重定向公用文件夹,因此我仍在使用完整路径,而在其他模块(/ gymmgr / public / lockers)上也没问题。

我向您发送了代码:

index.blade.php

@extends('layouts.app')
@section('content')    

@guest
@else
    <nav class="navbar navbar-dark sticky-top bg-dark flex-md-nowrap p-0">
      <a class="navbar-brand col-sm-3 col-md-2 mr-0" href="#">Lockers</a>
    </nav>

    <div class="container-fluid">
      <div class="row">
        <nav class="col-sm-1 d-md-block bg-light sidebar">
          <div class="sidebar-sticky">

            <h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-4 mb-1 text-muted">
              <span>Acciones</span>
              <a class="d-flex align-items-center text-muted" href="#">
                <span data-feather="plus-circle"></span>
              </a>
            </h6>

            <ul class="nav flex-column">
              <li class="nav-item">
                  <span data-feather="home"></span>
                   <span class="sr-only"></span>
              </li>
              <li class="nav-item">
                <a class="nav-link" href="/gymmgr/public/lockers/create">
                  <span data-feather="file"></span>
                  Nuevo
                </a>

            </ul>

          </div>
        </nav>

        <main role="main" class="col-md-9 ml-sm-auto col-lg-10 pt-3 px-4">
          <div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pb-2 mb-3 border-bottom">
            <h1 class="h5">Catálogo</h1>
            <div class="btn-toolbar mb-2 mb-md-0">
              <div class="btn-group mr-2">
                <button class="btn btn-sm btn-outline-secondary">Exportar</button>
              </div>
            </div>
          </div>



  <table class="table">
    <thead class="thead-light">

      <tr>
        <th>Clave del locker</th>
        <th>Ubicación</th>
     </tr>
    </thead>
    <tbody>
        @foreach($lockers as $locker)
      <tr>
        <td> <a href="/gymmgr/public/lockers/{{ $locker->idLocker }}">{{ $locker->strClaveLocker }} </a>></td>
        <td>{{ $locker->strUbicacion }}</td>
      </tr>

      @endforeach

    </tbody>
  </table>




        </main>
      </div>
    </div>

@endguest
@endsection

LockersController.php

<?php

namespace App\Http\Controllers;

use App\Locker;
use Illuminate\Http\Request;

class LockersController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        // 
        $lockers = Locker::all();
        return view('lockers.index', ['lockers'=>$lockers]);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
        return view('lockers.create');

    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
        /*
        if (Auth::check())
        {*/
            $locker = Locker::create(
                ['strClaveLocker'=>$request->input('strClaveLocker'),
                    'strUbicacion'=>$request->input('strUbicacion')
                ]
            );

            if($locker)
            {
                return redirect()->route('lockers.index')->with('success','Locker creado con éxito');
            }
     //   }*/
    }

    /**
     * Display the specified resource.
     *
     * @param  \App\Locker  $locker
     * @return \Illuminate\Http\Response
     */
    public function show(Locker $locker)
    {
        //
        $locker = Locker::find($locker->idLocker);
        //$locker = Locker::where('idLocker', $locker->idLocker)->first();
        //echo e($locker->idLocker);

        return view('lockers.show', ['locker'=>$locker]);

    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\Locker  $locker
     * @return \Illuminate\Http\Response
     */
    public function edit(Locker $locker)
    {
        //
        $locker = Locker::find($locker->idLocker);
       if ($locker)
        {
        return view('lockers.edit', ['locker'=>$locker])->with('success', 'Locker encontrado'); 
        };
        return view('lockers.edit', ['locker'=>$locker]);

    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Locker  $locker
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, Locker $locker)
    {
        //
        $lockerUpdate = Locker::where('idLocker', $locker->idLocker)->update([
            'strClaveLocker'=>$request->input('strClaveLocker'),
            'strUbicacion'=>$request->input('strUbicacion')]);
        if ($lockerUpdate)
        {
            return redirect()->route('lockers.show',['lockers'=>$locker->idLocker])
                ->with('success', 'Locker actualizado correctamente'); 
        }

        return back()->withInput();
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Locker  $locker
     * @return \Illuminate\Http\Response
     */
    public function destroy(Locker $locker)
    {
        //
        $findLocker = Locker::find($locker->idLocker);
        if($findLocker->delete())
        {
            return redirect()->route('lockers.index')
                ->with('success','Locker borrado exitosamente');
        }
        return back()->withInput()->with('error','El locker no pudo borrarse');
    }
}

create.blade.php

@extends('layouts.app')

@section('content')    


@guest
@else


<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header">{{ __('Locker') }}</div>
                <div class="card-body">
                    </form>
                      <form method="post" action="{{ route('lockers.create') }}">

                          {{ csrf_field() }} 
                          <input type="hidden" name="_method" value="put">

                          <div class="form-group">
                            <label for="locker-clave">Clave del locker<span class="required">*</span></label>
                            <input  placeholder="Clave del locker"
                                    id="locker-clave"
                                    required
                                    name="strClaveLocker"
                                    spellcheck="false" 
                                    class="form-control"
                            />
                          </div>

                          <div class="form-group">
                            <label for="locker-ubicacion">Ubicación del locker</label>
                            <input  placeholder="Ubicación del locker"
                                    id="locker-ubicacion"
                                    required
                                    name="strUbicacion"
                                    class="form-control"
                            />
                          </div>

                          <div class="form-group">
                            <input  type="submit"
                                    class="btn btn-primary"
                                    value="Aceptar" 
                                    />
                          </div>
                    </form>
                </div>
            </div>
        </div>

    </div>
</div>


@endguest

 @endsection

路线

web.php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

Route::resource('lockers','LockersController');

1 个答案:

答案 0 :(得分:0)

您的创建表单具有:

<form method="post" action="{{ route('lockers.create') }}">
...
<input type="hidden" name="_method" value="put">

因此,您正在向创建路由发送一个PUT请求。 As the docs describe.create声明设置的resource路由期望GET(请检查它设置的操作表)。由于没有设置匹配的路由,因此该请求将以404失败。

尽管命名混乱,但create路径用于显示创建表单,保存您在该表单中输入的数据。因此,您不应将数据提交到创建路径。

您需要:

  • 更改表单操作以指向您的store路线:... action="{{ route('lockers.store') }}

  • 删除表单方法欺骗,store期望POST,这是默认情况下不进行任何欺骗的结果。