Laravel: Renombrar un archivo situado en /resources

publicado por: Anonymous

Tengo archivos guardados en la siguiente ruta: /resources/views/projects/nombreproyecto.blade.php

Entonces, tengo un formulario que pido el nuevo nombre del proyecto y lo que quiero hacer es renombrar el archivo, por ejemplo:

Tengo un proyecto llamado lluistestantes, pues la ruta al archivo sería la siguiente:
/resources/views/projects/lluistestantes.blade.php

Entonces relleno el formulario, y pongo como nombre lluistestdespues, la ruta al archivo debería de ser la siguiente:
/resources/views/projects/lluistestdespues.blade.php

El controlador que hace la función se ve así:

public function updateProject(Request $request, $id) //Actualizar la informacion de un proyecto 
    { 
       $project = Project::find($id); //Encuentro que proyecto es

            $oldSlug = $project->slug; //guardo el valor ANTIGUO en la variable

            $project->order = $request->input('order'); //no es importante
            $project->public = $request->input('public'); //no es importante

            if (strcmp($oldSlug, $request->input('slug')) !== 0) { //Si el slug cambia, entra en el IF

            Storage::disk('projects')->move($project->slug, $request->input('slug')); //Se renombra la carpeta project, no darle atención a esta linea porque es independiente a la funcionalidad que busco ahora, ademas que es para archivos situados en Storage.

            $project->slug = $request->input('slug'); //se pilla el valor del slug NUEVO

            $project->pathheader = $request->input('slug').'/header.jpg'; //se guarda el path en la bbdd, no darle atención a esta linea porque es independiente a la funcionalidad que busco ahora.

            $project->pathhome = $request->input('slug').'/home.jpg';  //se guarda el path en la bdd, no darle atención a esta linea porque es independiente a la funcionalidad que busco ahora,

            File::move('/resources/views/projects/'.$oldSlug.'.blade.php','/resources/views/projects/'.$project->slug.'.blade.php'); //FUNCIÓN REALMENTE IMPORTANTE, pillo la blade antigua y la intento machacar con el nuevo valor.
        }
    }

El error que me da es el siguiente:

rename(/resources/views/projects/lluistestantes.blade.php,/resources/views/projects/lluistestdespues.blade.php): No such file or directory

solución

No encuentra el archivo porque no le estás pasando toda la ruta donde está ubicado el archivo. Para solucionar eso podes utilizar el helper resoure_path() o base_path('resources')
Modificá la ultima linea del metodo

File::move(resource_path('views/projects/').$oldSlug.'.blade.php',resource_path('views/projects/').$project->slug.'.blade.php');
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *