Laravel返回错误的视图

juzqafwq  于 2023-05-19  发布在  其他
关注(0)|答案(1)|浏览(159)

我遇到了一个问题,我不知道如何解决它。我正试着做一个表格,以便在数据库中插入数据。表单被ubicated的视图由Laravel的默认控制器函数create返回:

public function create()
    {
        return view("edicion-fosil");
    }

edicion-fosil视图的形式是这样的:

@extends ('layouts.main-layout')
@section ('page-title', 'Fosilesleon')
@section ('content-area')
    <form action="fosil.store" method="get">
        <div id="inputs_generales_fosil">
            <div id="input_imagen_fosil">
                <img src="" alt="" id="imagen_fosil_edicion">
                <input type="file" id="imagen_fosil_input" name="imagen_fosil_input">
            </div>
        </div>
        <div id="input_mapa">

        </div>
        <input type="submit" name="guardar_fosil" value="Guardar"/>
    </form>
@endsection

问题来了,当我点击提交按钮。而不是返回lista-fosiles视图,控制器存储函数应该返回的是另一个视图。
控制器存储功能如下:

public function store(Request $request)
    {
        return view("lista-fosiles");
    }

它应该返回的视图是这样的:

@extends ('layouts.main-layout')
@section ('page-title', 'Fosilesleon')
@section ('content-area')
    <?php
    //obtengo las distintas piedras, especies y edades
    $piedras = app('App\Http\Controllers\PiedraController')->getPiedras();
    $edades = app('App\Http\Controllers\EdadController')->getEdades();
    //$especies = app('App\Http\Controllers\EspecieController')->getEspecies();
    $nombres = app('App\Http\Controllers\EspecieController')->getNombres();
    $clases = app('App\Http\Controllers\EspecieController')->getClases();
    $filos = app('App\Http\Controllers\EspecieController')->getFilos();
    //dd($filos);
    ?>
    <div id="lista-fosiles-main">
        <form id="filtros-fosiles" action="#" method="fosiles/index">
            <div id="piedra">
                <label for="select-piedras">Piedra</label>
                <select id="select-piedras" name="select-piedras" onchange="this.form.submit()">
                    <option value="">Todas</option>
                    <?php
                    foreach($piedras as $piedra){
                        echo "<option value='".$piedra->id."'>".$piedra->nombre."</option>";
                    }
                    ?>
                </select>
            </div>
            <div id="edad">
                <label for="select-edad">Edad</label>
                <select id="select-edad" name="select-especies" onchange="this.form.submit()">
                    <option value="">Todas</option>
                    <?php
                    foreach($edades as $edad){
                        echo "<option value='".$edad->id."'>".$edad->periodo."</option>";
                    }
                    ?>
                </select>
            </div>
            <div id="nombre">
                <label for="select-nombre">Especie</label>
                <select id="select-nombre" name="select-nombre" onchange="this.form.submit()">
                    <option value="">Todas</option>
                    <?php
                    foreach($nombres as $nombre){
                        echo "<option value='".$nombre->nombre."'>".$nombre->nombre."</option>";
                    }
                    ?>
                </select>
            </div>
            <div id="clase">
                <label for="select-clase">Clase</label>
                <select id="select-clase" name="select-clase" onchange="this.form.submit()">
                    <option value="">Todas</option>
                    <?php
                    foreach($clases as $clase){
                        echo "<option value='".$clase->clase."'>".$clase->clase."</option>";
                    }
                    ?>
                </select>
            </div>
            <div id="filo">
                <label for="select-filo">Filo</label>
                <select id="select-filo" name="select-filo" onchange="this.form.submit()">
                    <option value="">Todos</option>
                    <?php
                    foreach($filos as $filo){
                        echo "<option value='".$filo->filo."'>".$filo->filo."</option>";
                    }
                    ?>
                </select>
            </div>
            <div id="verificado">
                <label for="check-verificado">Verificado</label>
                <input type="checkbox" id="check-verificado" name="check-verificado" onchange="this.form.submit()"/>
            </div>
        </form>
        <div class="fosiles-container">
            <?php
                $idEdad = "";
                $clase = "";
                $filo = "";
                $idUsuario = "";
                $idPiedra = "";
                $verificado = "";
                
                //$idEspecie = $_REQUEST["especie"];
                if(isset($_REQUEST["select-piedras"])){
                    $idPiedra = $_REQUEST["select-piedras"];
                }
                if(isset($_REQUEST["select-edad"])){
                    $idEdad = $_REQUEST["select-edad"];
                }
                if(isset($_REQUEST["check-verificado"])){
                    $verificado = $_REQUEST["check-verificado"];
                }
                $fosiles = app('App\Http\Controllers\FosilController')->getFosiles($idEdad, $idPiedra, $filo, $clase, $verificado, $idUsuario);
                foreach ($fosiles as $fosil){
                    $user = app('App\Http\Controllers\UserController')->getUserById($fosil->id_user);
                    $especie = app('App\Http\Controllers\EspecieController')->getEspecieById($fosil->id_especie);
                    echo ""?>
                        <x-fosil :fosil=$fosil :especie=$especie :user=$user></x-fosil>
                    <?php
                    ;
                }
            ?>
        </div>
    </div>
@endsection

返回的视图是:

@extends ('layouts.main-layout')
@section ('page-title', 'Fosilesleon')
@section ('content-area')
    <?php
    //print_r($_FILES);
    //inicializo el fósil obteniéndolo a partir de la id que me devuelve el método show de FosilController
    $fosil = app('App\Http\Controllers\FosilController')->getFosilById($fosil_id);
    //a partir de los datos del fósil, obtengo el usuario propietario, la piedra, la edad y la especie
    if($fosil != null){
        $user = app('App\Http\Controllers\UserController')->getUserById($fosil->id_user);
        $especie = app('App\Http\Controllers\EspecieController')->getEspecieById($fosil->id_especie);
        $piedra = app('App\Http\Controllers\PiedraController')->getPiedraById($fosil->id_piedra);
        $edad = app('App\Http\Controllers\EdadController')->getEdadById($piedra->id_edad);
        //esta variable guardará true si el usuario ha votado el fósil y false si no
        $votado = app('App\Http\Controllers\UsuariosvotoController')->votado(Auth::id(), $fosil_id);
    ?>

    <div id="ficha-fosil">
        <div id="datos-generales-fosil-main">
            <img src="{{$fosil->url_imagen}}" id="ficha-fosil-imagen" class="ficha-fosil-imagen" alt="imagen del fósil"  onerror="this.onerror=null; this.src='{{ URL::to('/') }}/images/default.png'">
            <div id="datos-generales-fosil"> 
                <div id="datos-generales">
                    <h2>{{$fosil->nombre}}</h2>
                    <h4>Ubicación:</h4>
                    <p>{{$fosil->direccion}}</p>
                    <h4>Publicado por:</h4>
                    <a href="" id="a-publicado-por" class="a-publicado-por">{{$user->name}}</a>
                    <?php
                    /*
                        if($fosil->verificado == 1){
                            echo "<p>Verificado <img src='/icons/check.png' height='16px' alt='verificado'/></p>";
                        }*/
                    ?>
                </div>
                <div id="votos">
                    <p><span class="bold big-font">{{$fosil->votos}}</span> usuarioshan verificado este fósil</p>
                    <div>
                    </div>
                </div>
            </div>
        </div>
        <div id="datos-especificos-fosil">
            <div id="datos-especie">
                <h1>FÓSIL</h1>
                <h3>{{$especie->nombre}}</h3>
                <h5>Clase:</h5>
                <p>{{$especie->clase}}</p>
                <h5>Filo:</h5>
                <p>{{$especie->filo}}</p>
                <p>{{$especie->descripcion}}</p>
            </div>
            <div id="datos-piedra">
                <h1>PIEDRA</h1>
                <img id="imagen-piedra-ficha-fosil" src="{{$piedra->url_imagen}}" alt="{{$piedra->nombre}}">
                <h3>{{$piedra->nombre}}</h3>
                <h5>Procedencia</h5>
                <p>{{$piedra->procedencia}}</p>
                <h5>Edad</h5>
                <p>{{$edad->periodo}}</p>
                <p><em>({{$edad->anio_inicio}} - {{$edad->anio_fin}})</em></p>
            </div>
        </div>
    </div>
    <?php
    }
    else{
        echo "<p>Something went wrong</p>";
    }
    ?>
    
@endsection

对不起的代码量,只是把它的情况下,它是必要的。另外,如果这是一个明显的错误,或者如果有代码可以用另一种更好的方式编写,我很抱歉,我正在开始使用Laravel。谢谢你的建议:)

mpgws1up

mpgws1up1#

有两个问题:

  • 路由为fosiles.store,而不是fosil.store
  • action值为{{route("fosiles.store")}}(route()缺失)

回复@N69S

相关问题