好吧,我的标题几乎说明了我需要的一切。我正在为我建立一个小网站,只是为了学习laravel框架。我创建了一个登录/注册和一些函数来执行线程或删除/编辑线程。我目前的问题是,登录的用户与写一个线程的用户是否相同并不重要。只是用户登录的事实,允许他编辑或删除我的网页上的每一个线程。这当然不是它应该是...这就是为什么我喜欢得到的说法:如果用户登录,有一些线程,然后让他删除或编辑自己的线程。如果用户不是编写该线程的用户,则不要让他显示删除或编辑该线程的选项。我怎么能说Laravel,如果线程属于这个用户,让他编辑或删除线程?
现在这是我目前的HTML - 或它的更好文档片断:
@if(Auth::check())
<div class="panel-footer">
{!! Former::horizontal_open()->method('DELETE')->action(action("Test\\[email protected]", $thread->id))->id('conf') !!}
{!! Former::danger_submit('Delete') !!}
{!! Former::close() !!}
<a href="{{ URL::route('edit', $thread->id) }}">
<div class="btn btn-primary">Edit</div>
</a>
</div>
@endif
</div>
<a href="#">
<div class="btn pull-right"><a href="{{ action('Test\\[email protected]') }}">Go back</a></div>
</a>
因此,这只是检查,如果用户登录,如果没有,他没有看到编辑/删除按钮。如果他登录,他当然会看到他们。
现在我需要一个代码来说明如果他是谁写的线程相同,然后让他编辑/删除它。
嗯,我真的不知道我怎么能做到这一点,我还没有真正找到了这个..
我有两个型号。一个用于所有线程,另一个用于所有用户。
我在我的线程模型中做了'belongsTo'realation,并且说它属于我的用户表中的name属性。
线程模型:
<?php
namespace App\Models\Thread;
use Illuminate\Database\Eloquent\Model;
class Thread extends Model {
public $table = 'thread';
public $fillable = [
'thread',
'content',
];
public function user() {
return $this->belongsTo(User::class, "name");
}
}
用户模型:
<?php
namespace App\Models\Thread;
use Illuminate\Database\Eloquent\Model;
class User extends Model {
public $table = 'users';
public $fillable = [
'name',
];
}
好..我坚持,我希望有人能帮助我与此有关。
感谢所有帮助和支持
其他代码部分我可以帮助:
Route::get('/show/{id}', 'Test\\[email protected]');
Route::get('/show/{id}/edit', 'Test\\[email protected]')->name('edit');
Route::put('/show/{id}/edit', ['as' => 'editing', 'uses' => 'Test\\[email protected]']);
Route::delete('/show/{id}', 'Test\\[email protected]')->name('destroy');
这就是我必须只显示线程,或要删除的路由/编辑线程
控制器:这是显示功能,让我用按钮查看:
public function show($id)
{
$thread = Thread::query()->findOrFail($id);
return view('test.show', [
'thread' => $thread,
]);
}
看看这个https://laravel.com/docs/5.2/authorization#defining-abilities –
好吧,我看到了这一点,并了解它的大部分,但我更像一个laravel初学者,所以不能想象一下现在我可以从哪里开始.. – ItzMe488