Я делаю запросы Ajax для laravel - но по какой-то причине моя пользовательская функция не ускользает от специальных символов. Я не могу понять, почему. Я использовал эту ту же самую функцию в CodeIgniter, и она отлично справляется с выходом. Все данные возвращаются в файл JS хорошо, но ничего не ускользает. Вот код:Laravel - htmlentities
public function store(Request $request, $project_id) {
//current logged in user.
$user_id = auth()->user()->id;
//get all post inputs
$inputs = $request->all();
//make sure project ID belongs to current user. Stop someone from adding a task to your project that isn't you.
$projectBelongsToUser = Project::find(1)->where('user_id', $user_id)->where('id', $project_id)->get();
//if a project ID and inputs are provided - log them to the database, if not redirect to home with $errors.
if($project_id && $inputs['description'] && $projectBelongsToUser) {
$task = New Task;
$task->description = $inputs['description'];
$task->due_date = $inputs['due_date'];
$task->priority = $inputs['priority'];
$task->completed = 0;
$task->order = 0;
$task->user_id = $user_id;
$task->project_id = $project_id;
$task->save();
//get all tasks
$tasks = Task::where('user_id', $user_id)->where('project_id', $project_id)->orderBy('description', 'asc')->get();
//sanitize tasks for safe output
function sanitize_object_h($array) {
$array_modified = $array;
foreach($array_modified as $object) {
foreach($object as &$item) {
$item = htmlentities($item, ENT_QUOTES);
}
//end foreach
}
//end foreach
return $array_modified;
}
//end sanitize_object_h
$sanitized_tasks = sanitize_object_h($tasks);
//return the sanitized object.
echo json_encode(sanitize_object_h($tasks));
} else {
echo "failed";
return;
}//end if
}//end store
Не знаете о вашей проблеме, но у вас есть несколько странных вещей, таких как первый проект :: find (1) ... вы выбираете 'id = 1', но используете, где' user_id = $ user_id', но и 'id = $ project_id'. Это не имеет смысла, id может быть только одним (в типичной структуре), поэтому только «Project :: find ($ project_id);». Если вы хотите, чтобы люди не пытались использовать чужие роли и разрешения, выполните следующие действия: –
@BojanKogoj. Вы могли бы сделать это через middelware (роли/разрешения)? Один из них - user_id, а другой - project_id. В таблице проектов есть отношение к таблице пользователей. – john23
Да, для этого я использую Entrust. Конечно, немного работы, чтобы все это работало так, как я хотел, но это того стоит, если вы спросите меня. Сохранение кода чистым и коротким. –