Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 7无法删除,已重定向到主页,而不是控制器重定向_Php_Laravel_Redirect - Fatal编程技术网

Php Laravel 7无法删除,已重定向到主页,而不是控制器重定向

Php Laravel 7无法删除,已重定向到主页,而不是控制器重定向,php,laravel,redirect,Php,Laravel,Redirect,我有一个名为vendor的经过身份验证的用户,我可以添加、更新业务。但是,当我尝试删除条目时,它会重定向到主页,而不是我在控制器中指定的重定向。我不确定这是否与我设置中间件的方式有关,但最后,它给了我一个消息,说明中间件中的身份验证失败,即“不允许您访问管理仪表板”。我确信我在中间或控制器中做了一些错误的事情。我应该提到,对于超级管理员来说,这个中间件工作得很好。也就是说,管理员谁可以阻止和取消阻止用户,并看到所有的业务进入。下面是下面的代码 vendorMiddleware.php <?

我有一个名为vendor的经过身份验证的用户,我可以添加、更新业务。但是,当我尝试删除条目时,它会重定向到主页,而不是我在控制器中指定的重定向。我不确定这是否与我设置中间件的方式有关,但最后,它给了我一个消息,说明中间件中的身份验证失败,即“不允许您访问管理仪表板”。我确信我在中间或控制器中做了一些错误的事情。我应该提到,对于超级管理员来说,这个中间件工作得很好。也就是说,管理员谁可以阻止和取消阻止用户,并看到所有的业务进入。下面是下面的代码

vendorMiddleware.php

<?php

namespace App\Http\Middleware;

use Closure;

use Illuminate\Support\Facades\Auth;

class VendorMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if (Auth::user()->role_as == 'vendor') {
            if (Auth::check() && Auth::user()->isBanned) {
                $banned = Auth::user()->isBanned == "1";
                Auth::logout();

                if ($banned == 1) {
                    $message = 'Your account has been Banned. Please contact the administrator.';
                }
                return redirect()->route('login')->with('status', $message)->withErrors(['email' => 'Your account has been Banned. Please contact the administrator.']);
            }
            return $next($request);
        } else {
            return redirect('/home')->with('status', 'You are not permitted to access the vendor dashboard');
        }
    }
}
表单和modals所在的My index.blade.php

@extends('layouts.vendor-admin')


@section('content')
<!-- Start delete modal-->

<div class="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"
  aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header text-center">
        <h4 class="modal-title w-100 font-weight-bold">Borrar</h4>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>

    <form action="vendor-empresas/{vendor_empresa}" method="POST" id="deleteForm">
        {{ csrf_field() }}
        {{ method_field('DELETE') }}

      <div class="modal-body mx-3">
        <input type="hidden" name="_method" value="DELETE">
        <div class="text-center">
            <i class="fas fa-exclamation-triangle mb-4" style="color: #ffc107; font-size: 32px;"></i>
        </div>
            <h3 class="text-center text-uppercase">¿Estás Seguro/a?
        </h3>
      </div>
      <div class="modal-footer d-flex justify-content-center">
        <button class="btn btn-primary" data-dismiss="modal">Cancelar</button>
        <button type="submit" class="btn btn-danger">Sí, Borralo!</button>

      </div>
    </form>
    </div>
  </div>
</div>

<!--end delete modal-->

<div class="container-fluid mt-5">

    <!-- Heading -->
    <div class="card mb-4 wow fadeIn">

      <!--Card content-->
      <div class="card-body d-sm-flex justify-content-between">

        <h4 class="mb-2 mb-sm-0 pt-1">
          <a href="/">Inicio</a>
          <span>/</span>
          <span>Empresas Registradas</span>
        </h4>
        @if (session('status'))
            <div class="alert alert-success fade-message" role="alert">
                {{ session('status') }}
            </div>
        @endif
        <div class="modal fade" id="modalRegisterForm" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
            <div class="modal-dialog" role="document">
                <div class="modal-content">
                <div class="modal-header text-center">
                    <h4 class="modal-title w-100 font-weight-bold">Añadir Empresa</h4>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                    </button>
                </div>
                <form action="/vendor-empresas" method="POST">
                    {{ csrf_field() }}
                <div class="modal-body mx-3">
                    <div class="md-form mb-1">
                        <input type="text" name="erfc" id="orangeForm-erfc" class="form-control validate">
                        <label data-error="wrong" data-success="right" for="orangeForm-erfc">RFC</label>
                    </div>
                    <div class="md-form mb-1">
                        <input type="text" name="enombre" id="orangeForm-enombre" class="form-control validate">
                        <label data-error="wrong" data-success="right" for="orangeForm-enombre">Nombre</label>
                    </div>
                    <div class="md-form mb-1">
                        <input type="text" name="ecalle" id="orangeForm-ecalle" class="form-control validate">
                        <label data-error="wrong" data-success="right" for="orangeForm-ecalle">Calle</label>
                    </div>
                    <div class="md-form mb-1">
                        <input type="text" name="ecolonia" id="orangeForm-ecolonia" class="form-control validate">
                        <label data-error="wrong" data-success="right" for="orangeForm-ecolonia">Colonia</label>
                    </div>
                    <div class="md-form mb-1">
                        <input type="text" name="eciudad" id="orangeForm-eciudad" class="form-control validate">
                        <label data-error="wrong" data-success="right" for="orangeForm-eciudad">Ciudad</label>
                    </div>
                    <div class="md-form mb-1">
                        <input type="text" name="eestado" id="orangeForm-eestado" class="form-control validate">
                        <label data-error="wrong" data-success="right" for="orangeForm-eestado">Estado</label>
                    </div>
                    <div class="md-form mb-1">
                        <input type="text" name="ecpostal" id="orangeForm-ecpostal" class="form-control validate">
                        <label data-error="wrong" data-success="right" for="orangeForm-ecpostal">Codigo Postal</label>
                    </div>
                    <div class="md-form mb-1">
                        <input type="text" name="epais" id="orangeForm-epais" class="form-control validate">
                        <label data-error="wrong" data-success="right" for="orangeForm-epais">País</label>
                    </div>
                    <div style="display: none;" class="md-form mb-1">
                        <input type="text" name="user_id" readonly id="orangeForm-euser" class="form-control validate" value="{{ Auth::user()->id }}">

                        </div>
                        <div style="display: none;" class="md-form mb-1">
                            <input type="text" name="eregby" readonly id="orangeForm-eregby" class="form-control validate" value="{{ Auth::user()->id }}">

                        </div>

                </div>
                <div class="modal-footer d-flex justify-content-center">
                    <button type="submit" class="btn btn-deep-orange">Añadir</button>
                </div>
            </form>
                </div>
            </div>
        </div>
<div class="text-center">
  <a href="" class="btn btn-default btn-rounded mb-4" data-toggle="modal" data-target="#modalRegisterForm"><i class="fa fa-plus" aria-hidden="true"></i>&nbsp;&nbsp; Añadir</a>
</div>


      </div>

    </div>
    <!-- Heading -->

    <!--Grid row-->
      <!--Grid column-->
      <div class="row">
        <!--Card-->
        <div class="col-md-12 mb-4">
          <!--Card content-->
          <div class="card">
            <!-- List group links -->
             <div class="card-body">
                <div class="table-responsive">
                    <table id="datatable2" class="table table-bordered">
                    <thead>
                        <tr>
                            <th style="display: none;">ID</th>
                           <th>RFC</th>
                           <th>Nombre</th>
                           <th>Calle</th>
                           <th>Colonia</th>
                           <th>Ciudad</th>
                           <th>Estado</th>
                           <th>Codigo Postal</th>
                           <th>País</th>
                           <th>Acción</th>
                        </tr>
                    </thead>
                    <tbody>
                        @foreach ($empresas as $empresa)
                         <tr>
                        <input type="hidden" name="id" value="{{ $empresa->id }}">
                        <td style="display: none;">{{ $empresa->id }}</td>
                         <td>{{ $empresa->erfc }}</td>
                         <td>{{ $empresa->enombre }}</td>
                         <td>{{ $empresa->ecalle }}</td>
                         <td>{{ $empresa->ecolonia }}</td>
                         <td>{{ $empresa->eciudad }}</td>
                         <td>{{ $empresa->eestado }}</td>
                         <td>{{ $empresa->ecpostal }}</td>
                         <td>{{ $empresa->epais }}</td>

                         <td>
                            <div class="text-center">
                            <a class="badge badge-pill btn-primary px-3 py-2" href="{{ url('vendor-empresas/'.$empresa->id).'/edit' }}">Editar</a>
                            <a class="delete badge badge-pill btn-danger px-3 py-2">Borrar</a>
                        </div>
                         </td>
                         </tr>
                        @endforeach
                    </tbody>
                </table>
                </div>


            </div>
            <!-- List group links -->
          </div>
        </div>
        <!--/.Card-->
      </div>
      <!--Grid row-->
  </div>
@endsection

@section('scripts')
<script>
    $(document).ready(function() {
    let table = $('#datatable2').DataTable();
 // Start Delete Record
 table.on('click', '.delete', function() {
        $tr = $(this).closest('tr');
        if($($tr).hasClass('child')) {
            $tr = $tr.prev('.parent')
        }
        let data = table.row($tr).data();
        console.log(data);

        $('#deleteForm').attr('action', '/delete-empresa/'+data[0]);
        $('#deleteModal').modal('show');
    });
    // End Delete Record
});
</script>
<script>
    $(document).ready(function($) {
        $(function() {
            setTimeout(function() {
                $('.fade-message').slideUp();
            }, 3000);
        });
    });
</script>
@endsection
在我的AuthServiceProvider中,我有:

    protected $policies = [
            'App\Empresa' => 'App\Policies\EmpresaPolicy',
        ];
I tried this in my vendorEmpresasController.php 
public function destroy($id)
    {

        $empresa = Empresa::find($id);
        $this->authorizeResource(Empresa::class, 'delete', $empresa);
        if ($empresa != null) {
            $empresa->delete();
            return redirect('/vendor-empresas')->with('status', 'Empresa Borrado Exitosamente.');
            // return redirect()->to('/vendor-empresas')->with('status', 'Empresa Borrado Exitosamente.');
        } else {
            return redirect('/vendor-empresas')->with('status', 'ID Equivocado! La empresa no fue borrado.');
        }
    }
最后,在我的web.php中,我有:

public function delete(User $user, Empresa $empresa)
    {
        return true;
    }
Route::delete('/vendor-empresas/{vendor_empresa}', 'vendorEmpresaController@destroy');
当我想被重定向到/vendor empresas时,我仍然被重定向回家中 谢谢你的帮助。非常感谢。 编辑#2 以下是vendormiddleware.php的dd输出

单击删除确认按钮:
您的条件是:
if(Auth::user()->role\u as==“vendor”)

如果条件返回
false
您将收到以下信息:
返回重定向('/home')->带有('status','您不允许访问供应商仪表板')


结论是:如果您被重定向到
/home
,并且看到
消息“您不允许访问供应商仪表板”
,这意味着当前记录的用户字段
角色作为
不等于
'vendor'

您的条件是:
如果(Auth::user()->角色作为='vendor')

如果条件返回
false
您将收到以下信息:
返回重定向('/home')->带有('status','您不允许访问供应商仪表板')


结论是:如果您被重定向到
/home
并看到
消息“您不允许访问供应商仪表板”
,这意味着当前记录的用户字段
角色不等于
“供应商”
,发现问题。第一,在我的web.php文件中,我需要隔离我的供应商和管理员组及其透视路由。下面是它现在的样子:

<?php

use Illuminate\Support\Facades\Route;

use Illuminate\Support\Facades\Auth;


Route::get('/', function () {
    return view('frontend.index');
});


Auth::routes();

Route::group(['middleware' => ['auth', 'isUser']], function () {

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

Route::group(['middleware' => ['auth', 'isAdmin']], function () {
    Route::get('/dashboard', function () {
        return view('admin.dashboard');
    });

    // Usuarios
    Route::get('registered-user', 'Admin\RegisteredController@index');
    Route::delete('/user-delete/{id}', 'Admin\RegisteredController@destroy');
    Route::get('role-edit/{id}', 'Admin\RegisteredController@edit');
    Route::put('role-update/{id}', 'Admin\RegisteredController@updaterole');
    // Empresas
    Route::get('registered-empresa', 'Admin\EmpresaController@index');
    Route::post('save-empresa', 'Admin\EmpresaController@store');
    Route::get('/edit-empresa/{id}', 'Admin\EmpresaController@edit');
    Route::put('/empresa-update/{id}', 'Admin\EmpresaController@update');
    Route::delete('/delete-empresa/{id}', 'Admin\EmpresaController@destroy');
    // Empleados
    Route::get('registered-empleado', 'Admin\EmpleadoController@index');
    Route::get('/edit-empleado/{id}', 'Admin\EmpleadoController@edit');
    Route::put('/empleado-update/{id}', 'Admin\EmpleadoController@update');
    Route::post('save-empleado', 'Admin\EmpleadoController@store');
    Route::delete('/delete-empleado/{id}', 'Admin\EmpleadoController@destroy');
});

Route::group(['middleware' => ['auth', 'isVendor']], function () {
    Route::get('/vendor-dashboard', function () {
        return view('vendor.dashboard');
    });
    
    Route::resource('vendor-empresas', 'vendorEmpresaController');
Route::resource('vendor-empleados', 'vendorEmpleadoController');

Route::delete('/vendor-empresas/{vendor_empresa}', 'vendorEmpresaController@destroy');
    
});

我希望这能帮助有同样问题的人。干杯。

发现了问题。第一,在我的web.php文件中,我需要隔离我的供应商和管理员组及其透视路由。下面是它现在的样子:

<?php

use Illuminate\Support\Facades\Route;

use Illuminate\Support\Facades\Auth;


Route::get('/', function () {
    return view('frontend.index');
});


Auth::routes();

Route::group(['middleware' => ['auth', 'isUser']], function () {

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

Route::group(['middleware' => ['auth', 'isAdmin']], function () {
    Route::get('/dashboard', function () {
        return view('admin.dashboard');
    });

    // Usuarios
    Route::get('registered-user', 'Admin\RegisteredController@index');
    Route::delete('/user-delete/{id}', 'Admin\RegisteredController@destroy');
    Route::get('role-edit/{id}', 'Admin\RegisteredController@edit');
    Route::put('role-update/{id}', 'Admin\RegisteredController@updaterole');
    // Empresas
    Route::get('registered-empresa', 'Admin\EmpresaController@index');
    Route::post('save-empresa', 'Admin\EmpresaController@store');
    Route::get('/edit-empresa/{id}', 'Admin\EmpresaController@edit');
    Route::put('/empresa-update/{id}', 'Admin\EmpresaController@update');
    Route::delete('/delete-empresa/{id}', 'Admin\EmpresaController@destroy');
    // Empleados
    Route::get('registered-empleado', 'Admin\EmpleadoController@index');
    Route::get('/edit-empleado/{id}', 'Admin\EmpleadoController@edit');
    Route::put('/empleado-update/{id}', 'Admin\EmpleadoController@update');
    Route::post('save-empleado', 'Admin\EmpleadoController@store');
    Route::delete('/delete-empleado/{id}', 'Admin\EmpleadoController@destroy');
});

Route::group(['middleware' => ['auth', 'isVendor']], function () {
    Route::get('/vendor-dashboard', function () {
        return view('vendor.dashboard');
    });
    
    Route::resource('vendor-empresas', 'vendorEmpresaController');
Route::resource('vendor-empleados', 'vendorEmpleadoController');

Route::delete('/vendor-empresas/{vendor_empresa}', 'vendorEmpresaController@destroy');
    
});


我希望这能帮助有同样问题的人。干杯。

所以基本上
Auth::user()->role_as==“vendor”
没有真实性?你能用数据库中的一个用户展开你的问题吗,一个正在工作,一个没有工作?删除
否则{return redirect('/home')->with('status',你不允许访问vendor dashboard');}
在VendorMiddleWalhello Sobir和RCRalph中。我不确定角色_as==vendor返回的是真是假,但在删除中间件中Sobir建议的行之后,我仍然收到相同的消息,并发现在Adin中间件中有类似的内容:公共函数句柄($request,Closure$next){if(Auth::user()->role_as=='admin'){return$next($request);}else{return redirect('/home')->with('status','You not allowed to access the dashboard dool!');}}}有什么线索吗?非常感谢。edit works delete fails如果我删除这两个中间件中的else语句,我会得到:尝试获取非objectSo的属性“headers”
Auth::user()->role\u as==“vendor”
不能真实?你能用数据库中的一个用户展开你的问题吗?一个正在工作,一个不工作?删除
else{return redirect('/home')->带有('status','You not allowed to access the vendor dashboard');}
在VendorMiddleWalhello Sobir和RCRalph中。我不确定角色_as==vendor返回的是真实的还是错误的,但在删除中间件中Sobir建议的行后,我仍然收到相同的消息,并发现我在Adin中间件中有类似的东西:公共函数句柄($request,Closure$next){if(Auth::user()->role_as=='admin'){return$next('request);}否则{return redirect('/home')->with('status','You not allowed to access the dashboard Fool!';}有什么线索吗?谢谢。edit works delete失败如果我删除两个中间件中的else语句,我会得到:尝试获取数据库中非ObjectInded strange的属性“Header”,role_as==vendor。这样我就可以查看、创建和更新,而不是删除。你检查中间件中的用户对象了吗?我的意思是-在中间件中,首先如果这样做:
dd(Auth::user());
。感谢您对Pjplonka的评论。我已经编辑了我的帖子,以显示dd(Auth::user())的详细信息;@ErikJamesRobles好的,您是否在应用程序中使用该消息:
“您不允许访问供应商仪表板”
,除了该VendorMiddleware?adminMiddleware警告说,您不允许访问管理仪表板,VendorMiddleware说,您不允许访问供应商仪表板(如果它只是一个标准用户)。确实很奇怪,在db中,role_as==vendor。因此,我能够查看、创建和更新,而不是删除。你在中间件中检查过用户对象吗?我的意思是-在中间件中,在第一次这样做之前:
dd(Auth::user());
。谢谢你的评论Pjplonka。我已经编辑了我的帖子以显示dd的详细信息(Auth::user();@ErikJamesRobles好的,您是否在应用程序中使用该消息:
“您不允许访问供应商仪表板”
,但VendorMiddleware除外?adminMiddleware警告说,您是
@section('scripts')
<script>
    $(document).ready(function() {
    let table = $('#datatable2').DataTable();
 // Start Delete Record
 table.on('click', '.delete', function() {
        $tr = $(this).closest('tr');
        if($($tr).hasClass('child')) {
            $tr = $tr.prev('.parent')
        }
        let data = table.row($tr).data();
        console.log(data);

        $('#deleteForm').attr('action', '/vendor-empresas/'+data[0]);
        $('#deleteModal').modal('show');
    });
    // End Delete Record
});
</script>
<script>
    $(document).ready(function($) {
        $(function() {
            setTimeout(function() {
                $('.fade-message').slideUp();
            }, 3000);
        });
    });
</script>
@endsection
 public function destroy($id)
    {

        $empresa = Empresa::find($id);
        if ($empresa != null) {

            $empresa->delete();
            return redirect('/vendor-empresas')->with('status', 'Empresa Borrado Exitosamente.');
            // return redirect()->to('/vendor-empresas')->with('status', 'Empresa Borrado Exitosamente.');
        } else {
            return redirect('/vendor-empresas')->with('status', 'ID Equivocado! La empresa no fue borrado.');
        }
    }