2017-02-05 12 views
0

私はLaravelに基づいてOctoberCMSを使用しています。フォームを使用してファイルを削除する方法は?

ファイルを削除しようとしています。テキストボックスにファイル名を入力してsubmitを押します。

コンポーネントフォーム

<form method="POST" action="{{ url('/purge') }}"> 
    <input type="hidden" name="_handler" value="onPurge" /> 
    {{ form_token() }} 
    {{ form_sessionKey() }} 

    <input type="text" name="filename" /> 

    <input type="submit" name="submit" value="Purge" /> 
</form> 

コンポーネントPHP

public function onPurge(){ 
    $name = $_POST['filename']; 

    if (!empty($_POST['submit'])) { 
     $file->delete(storage_path("app/media/$name")); 
    } 
} 

エラー

Non-static method Illuminate\Database\Eloquent\Model::delete() should not be called statically 

私は

012を試してみました
public function onPurge(){ 
    $name = $_POST['filename']; 

    if (!empty($_POST['submit'])) { 
     $file = new Video(); 
     $file->delete(storage_path("app/media/$name")); 
    } 
} 

は(も完全なパス/ var/www/mysite /に公開/と)

関数は、エラーなしを完了していないが、ファイルは削除されません。

+0

私は、File :: exists()が存在する場合には、自分のコードをそのまま使用できるかどうかを確認することをお勧めします。 P.S.パスを絶対$ path = public_path()。 "/ storage/app/media /"に変更するか、ファイルのパスをチェックしてください。 – rahulsm

+0

@rahul_mコードパスを調整しました。ファイルは削除されませんが、私はtrueを返します。if(File :: exists(storage_path( "app/media/$ name"))){echo "File Exists"; } –

+1

良いパスFile :: delete(storage_path( "app/media/$ name")));一度試して – rahulsm

答えて

1

あなたのパージ機能は、私はそれが動作するはず感じる

public function onPurge(){ 
    $name = $_POST['filename']; 
    $file_path = storage_path("app/media/$name"); 
    if(File::exists($file_path)){ // OR \File::exists($file_path) 
    File::delete($file_path); // OR \File::delete($file_path) 
    } 
} 

、のようにする必要があります。

お試しください。

+0

それをテストするのが難しい '$ _POST'スーパーグローバルに直接アクセスしないでください。 – OsDev

+1

私は、すべてのコントローラメソッド内に$ request変数があることを示します。しかし私はOPの実現可能性を考慮した – rahulsm

1

代わりにphp関数のリンクを使用できます。

if (!empty($_POST['submit'])) { 
    $removed = unlink($path . $file); 
}if(!$removed) { 
    die('file could not be deleted'); 
} 
+0

私はエラーを取得します。未定義のメソッドを呼び出します。10月\ Rain \ Database \ QueryBuilder :: unlink() –

関連する問題