2017-05-29 53 views
0

我想知道是否可以在前端使用laravel artisan命令?如果是的話,怎麼樣?前端Laravel命令行

我的意思是:

例如把網站維護模式,我們使用php artisan down,所以我想知道的是有反正如果我把這作爲一個選項,我的管理員通過把他們的網站維護模式例如一些複選框?

此外,這也可用於更新.env文件代碼。

對此有何看法?

+0

是的,你可以從前端做到這一點。你需要打電話給你的'Artisan :: call('down']);' –

+0

@NikhilRadadiya你有任何樣品嗎?正如你在這種情況下看到的那樣,我已經失去了知識! :) – djhru

+0

檢查此https://stackoverflow.com/questions/21047573/maintenance-mode-without-using-artisan –

回答

0

您可以從您的路由器或在控制器中像這樣調用工匠:

Artisan::call('down'); 

當心你可能會得到這個錯誤:

Use of undefined constant STDIN 

,你可以通過把這個片段的工匠之前修正電話:

define('STDIN',fopen("php://stdin","r")); 
+0

你能給我一個完整的功能樣本?我真的沒有在前端獲得關於artisan命令的設置,例如我如何在複選框中定義它? – djhru

+0

@robertnicjoo它只是一個函數調用,您可以將它放在程序中的任何位置,當您單擊該複選框時可能會調用一個函數,您可以將工匠調用放在那裏! – FMashiro

0

是的,你可以。但在你的情況下它不可行。您可以使用控制器中的Artisan::call('command-name')來調用所有命令。因此,您可以傳遞前端的請求,並在您的控制器中處理它們以執行適當的命令。

但在你的例子中,使用down命令將網站置於維護模式將不正確。作爲管理員,您將能夠從您的控制器撥打Artisan::call('down');。但是,一旦網站進入維護模式,即使管理員也無法訪問它,從而無法從控制面板/儀表板中獲取它。 Laravel的默認中間件讓每個人都可以使用該網站,但如果您自定義中間件以允許管理員以維護模式訪問網站,則可以使其工作。

至於修改.env文件,它只是一個可以像其他文件一樣修改的文件。但請注意,可能會緩存配置,具體取決於您的部署,您需要運行Artisan::call('config:clear');來清除配置,或者需要Artisan::call('config:cache');來緩存配置。

+0

今天你幫了我很多忙,我明白了,你說的話有道理,但是我現在使用中間件'$ this-> middleware('auth:admin');'我應該在這個文件中添加代碼還是創建另一個?如果另一個可以在一個控制器中使用2箇中間件? – djhru

+1

處理維護模式的中間件是「CheckForMaintenanceMode」,它是一個全局中間件,它可以應用到應用程序中的每一條路徑而不會隱式添加它。所以你需要修改該中間件以允許管理員。同樣爲了回答第二個問題,您可以在任何控制器或路由上使用任意數量的中間件。 – Sandeesh

+0

我試過這個'protected $,除了= {// URIs,https:// laravel。com/docs/master/routing#csrf-excluded-uris 'admin', 'admin/*', 'stats' ];'在CheckForMaintenanceMode'中,但仍然會把我踢出去! :)爲什麼? – djhru