Решение: Эта проблема возникла из-за того, что я пытался расшифровать что-то, что было сохранено в моей базе данных в виде простого текста.Вы, очевидно, не можете расшифровать то, что не зашифровано.Duh!Я чувствую себя идиотом.Но я собираюсь оставить этот пост как напоминание всем тем, кто сталкивался с той же проблемой.Не забудьте проверить свою базу данных, чтобы убедиться, что вы расшифровываете что-то зашифрованное!: P
Исходное сообщение
Итак, я новичок в области шифрования и дешифрования, поэтому я постараюсь подробно документировать все, что могу, чтобы не запутать себя илиЛюбой, кто читает этот пост.
Цель: Когда я отправляю форму, я хочу зашифровать $request->note
, и я хочу расшифровать прямо перед тем, как позволить пользователю увидеть «заметку».
Прогресс на данный момент: Я успешно зашифровал записку при отправке формы, используя модельные мутаторы.Я могу показать пользователю на странице «Показать» единственную расшифрованную заметку.Однако на странице «указатель» я не могу показать заметки, и меня выдает ошибка «Полезная нагрузка недействительна».Что странно, потому что я успешно расшифровываю на странице шоу.Я получаю эту ошибку только в цикле foreach индексной страницы.Я сделал die / dump для моей Коллекции (переменная $notes
), и я успешно извлекаю записи из базы данных, и коллекция возвращает зашифрованную заметку вместе с коллекцией.Я получаю сообщение об ошибке только при вызове $note->note
в цикле foreach.Так что я немного растерялся.Что может сделать страница показа, когда при извлечении одной записи из базы данных не возвращаются какие-либо ошибки, но при извлечении нескольких записей из базы данных эта ошибка будет возвращаться?
Ошибка, которую я получаю.Отредактировал имя сайта и заменил на «SiteName».
Полезная нагрузка недействительна.(View: / Volumes / Secondary HDD / Sites / SiteName / resources / views / notes / index.blade.php)
Вот мой код с некоторыми комментариями, чтобы сделать вещи немного проще.Обратите внимание, что я публикую много кода.Это для того, чтобы показать страницу показа, не вызывая у меня никаких проблем, и как проиндексировать страницу.Я не уверен, в чем проблема.Поэтому я выкидываю как можно больше информации по этому вопросу, публикуя весь соответствующий код.
Note.php (Модель) Пространство имен приложения;
use Illuminate\Support\Facades\Crypt;
use Illuminate\Database\Eloquent\Model;
class Note extends Model
{
// Define the relationship between Notes and Steps
public function step() {
return $this->belongsTo('App\Step');
}
// Encrypt the Note
public function setNoteAttribute($value) {
$this->attributes['note'] = Crypt::encryptString($value);
}
// Decrypt the Note
public function getNoteAttribute($value) {
return Crypt::decryptString($value);
}
}
метод index () в NotesController.php
public function index()
{
// Assign the user id a variable
$user_id = Auth::user()->id;
// Find all the notes written by the user
$notes = Note::where('user_id', '=', $user_id)->orderBy('created_at', 'desc')->paginate(20);
// Return the view with all the notes
return view('notes.index')->withNotes($notes);
}
index.blade.php foreach loop
@foreach($notes as $note)
<tr>
<td class="text-center">{{ $note->step->number }}</td>
<td>
{{ substr(strip_tags(str_replace(" ", ' ', $note->note)), 0, 100) }}
{{ strlen(strip_tags(str_replace(" ", ' ', $note->note))) > 100 ? "..." : "" }}
</td>
<td class="text-right">
{!! Form::open(['route' => ['notes.destroy', $note->id], 'method' => 'DELETE']) !!}
<a href="{{ route('notes.edit', $note->id) }}" class="btn btn-info btn-sm">Edit</a>
{!! Form::submit('Delete', ['class' => 'btn btn-danger btn-sm']) !!}
{!! Form::close() !!}
</td>
</tr>
@endforeach
show() Метод в NotesController.php
public function show($id)
{
// Grab the Note by the ID from the Database
$note = Note::find($id);
// Assign the Authenticated User ID to a variable
$user_id = Auth::User()->id;
// Check the Authenticated User ID with the Note's User ID in the Database
if(!$user_id === $note->user_id) {
// Throw a 403 Error if it doesn't match
return response(view('errors.403'), 403);
}
// Return the view with the Note
return view('notes.show')->withNote($note);
}
show.blade.php без цикла foreach, поскольку я получаю только одну запись из базы данных
<div class="row">
<div class="col-sm-8 offset-sm-2">
<h3>Your Note</h3>
<p>
About: Step {{ $note->step->number }}
<br>
Created On: {{ date('M j, Y @ H:i', strtotime($note->created_at)) }}
<br>
</p>
<hr>
<p>
{{ $note->note }}
</p>
</div>
</div>