Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.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
当缺少1个参数时,添加到laravel中的异常web路由_Laravel - Fatal编程技术网

当缺少1个参数时,添加到laravel中的异常web路由

当缺少1个参数时,添加到laravel中的异常web路由,laravel,Laravel,我在laravel框架中遇到了问题,我在web路由中有两个参数,在数据库中查找某些内容的确切值。当我删除一个字符时,会出现错误 路线为: Route::get('/serije/prikaz/{id}/{naziv}', 'SerijeController@prikaz')->where(['id' => '[0-9]+', 'naziv' => '^[a-z0-9]+(?:-[a-z0-9]+)*$']); 控制器为: public function prikaz($id,

我在laravel框架中遇到了问题,我在web路由中有两个参数,在数据库中查找某些内容的确切值。当我删除一个字符时,会出现错误

路线为:

Route::get('/serije/prikaz/{id}/{naziv}', 'SerijeController@prikaz')->where(['id' => '[0-9]+', 'naziv' => '^[a-z0-9]+(?:-[a-z0-9]+)*$']);
控制器为:

public function prikaz($id, $naziv)
    {
        $serija = DB::table('serije')
            ->where(
                [
                    ['id', '=', $id],
                    ['slug', '=', $naziv],
                ]
            )
            ->first();
return view('serije.prikaz', ['serija' => $serija,);
}
所以我的url是这样的:

ID=418 slug=精英

这是在数据库中,当我只删除一个字符时,如

有错误

ErrorException
Trying to get property 'naziv' of non-object
http://localhost/serije/prikaz/418/elit
我如何创建自定义错误消息,如“没有数据”,或“您创建了错误的url”


谢谢。

您可以向控制器添加一些消息:

public function prikaz($id, $naziv)
{
    $serija = DB::table('serije')
        ->where(
            [
                ['id', '=', $id],
                ['slug', '=', $naziv],
            ]
        )
        ->first();
    $message = $serija ? '': 'There is no data for that';

    return view('serije.prikaz', compact('serija', 'message'));
}
然后检查以确保视图中的
$serija
不为空,如果为空,则显示消息。

导入类:

use Illuminate\Support\Facades\Validator;
在职能范围内:

$validator = Validator::make($request->all(), [
    'id' => 'required',
    'naviz' => 'required'
]);

if($validator->fails()) {
    $errors = $validator->errors();
    return response()->json(['status' => 'error', 'data' => null, 'message' => $errors], 422);
}

您应该在刀片视图中检查
@if($serija==null)
,或者您可以将
->first()
替换为
->firstOrFail()