簡體   English   中英

你如何 go 在 laravel 的目錄中升級?

[英]How do you go up a level in directory in laravel?

我試圖完成 laracast 課程,但遇到了錯誤。 運行此鱈魚后

Route::get('posts/{post}', function ($slug){
    $path = __DIR__."/../resources/posts/{$slug}.html";

    ddd($path);

    if (! file_exists($path)){
        return redirect('/');
    }
    $post = file_get_contents($path);
    return view('post', [
        'post' => $post]);
})->where('post', '[A-z_\-]+');

我想看到第一個post.html,但是ddd window打開說“內容:”D:\ Projects\laravel\blog\routes/../resources/posts/first-post.html“”意思是它沒有t 將“/../”計為“上一級目錄”,但只需將其讀取為文件夾名稱。 我仔細檢查了目錄 blog/resources/posts/first-post.html 確實存在。

您可以使用:

$path = resource_path('views/posts/'. $slug .'.html');

您可以通過在應用程序的resources/views目錄中放置一個擴展名為.blade.php的文件來創建視圖,而不是.html

.blade.php擴展通知框架該文件包含一個Blade 模板

您需要將first-post.html重命名為first-post.blade.php

創建視圖后,您可以使用全局視圖助手從應用程序的路由或控制器之一返回它,而無需file_get_contents

return view('first-post', $data);

如您所見,傳遞給視圖助手的第一個參數對應於resources/views目錄中視圖文件的名稱。 第二個參數是應該對視圖可用的數據數組。

參考您的路線; 如果要檢查文件是否存在,可以使用:

$exists = view()->exists('first-post'); // return boolean

因此,您可以使用的最終代碼:

Route::get('posts/{post}', function ($slug) {
    if (view()->exists($slug)) {
        return view($slug);
    }

    return abort(404); // Show 404 page if view doesn't exists
});

最后說明

至少,您應該查看官方 Laravel 文檔的介紹。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM