Я очень новичок в Laravel, и мне дали проект Laravel, где мне нужно добавить некоторые новые функции. Человек, который ранее работал над этим проектом, не оставил ни одного комментария в коде, и теперь я должен составить свои собственные сценарии о функциях. У меня есть контроллер, определенный с некоторыми функциями (панель инструментов, show_project, save_project и т. Д.), И в одной из моих функций мне нужно использовать результат вызова другой функции.
В конкретном примере вызов производится из «http://127.0.0.1:8000/username/project_slug"» - есть кнопка «Сохранить» и функция публикации, вызываемая по событию onClick . вывод, который мне нужен, обычно вызывается на "http://127.0.0.1:8000/username/project_slug/svg",, который возвращает представление.
Для лучшего понимания есть пример потока:
Пользователь хочет сохранить свой проект (диаграмму UML), но для того, чтобы иметь миниатюру, функцию, которая генерирует представление (SVG)будет вызван формат), и идея состоит в том, чтобы взять HTML-содержимое страницы, которое находится на «http://127.0.0.1:8000/username/project_slug/svg", и передать его другому API для создания изображения.
До сих пор я пытался использовать методы cURL , file_get_contents , file_get_html , render , но когда я возвращаю вывод, сервер просто продолжает ждатьи не показывает сообщений об ошибках.
//The both functions are in ProjectController.php
/**
* A function, for saving the json file, where the whole of the diagram
* components are described. From the frontend we receive the project_id and
* the project_data(the json content).
*/
public function save_project(Request $request) {
$input = $request->only(['project_id', 'project_data']);
/*
Here we need to call the other function, to render the HTML content
and to pass it to the other API. Then we save the result with the
other information.
*/
/*
What I've tried?
$new_link = 'http://' . $_SERVER['HTTP_HOST'] . "/$username"
."/$project_slug" . "/svg";
$contents = file_get_contents($new_link);
return $contents;
*/
//In the same way with cURL.
$project = Project::where('user_id',session('userid'))
->where('id',$input['project_id'])->first();
$project->project_data = json_encode($input['project_data']);
if($project->save()) {
return ["status"=>"saved"];
}
else {
return ["status"=>"error"];
}
}
/**
* A function, which takes the the Json content (project_data) from the
* database and passes it to the view, where the Json is transformed in HTML
* tags.
*/
public function generate_svg(Request $request,$username,$project_slug) {
if(session('username')!=$username) {
return redirect("/");
}
$userid = session('userid');
$project = Project::where([
'user_id' => $userid,
'slug' => $project_slug,
])->first();
if(!is_null($project)) {
return view('svg',compact('project'));
}
}
Я читал о некоторых возможных способах, включая запрос Guzzle, но, возможно, я не правильно понял идею:
Если мне нужно сделать Жрать Запрос от моего контроллера к другой функции внутри моего контроллера, нужна ли мне конфигурация API?
Что я имею в виду? Пример: перед сохранением проекта пользователь находится по этому URL-адресу"http://127.0.0.1:8000/hristo/16test". InsidВ контроллере у меня в переменных сеанса есть токен, имя пользователя (hristo) и я могу получить имя_проекта (16test) из URL, но после передачи этого URL в функцию generate_svg нет никаких указаний наошибка или успех
Значит, мне не хватает какой-то информации о токене?