📅  最后修改于: 2023-12-03 15:14:15.987000             🧑  作者: Mango
在 Laravel 应用程序中,在控制器中发布特定分类的文章是一个常见的任务。这可以通过使用模型和 Eloquent ORM 来完成,这样我们就可以将文章数据存储在数据库中。
以下是发布特定分类的文章所需的步骤:
首先,我们需要在 routes/web.php
文件中定义路由来处理我们的请求。在这里,我们可以定义一个路由,以响应 POST 请求并将其指向特定的控制器方法。
Route::post('/post-category/{category_id}', 'PostController@create')->name('post-category.create');
```php
Route::post('/post-category/{category_id}', 'PostController@create')->name('post-category.create');
### 第 2 步:创建控制器
接下来,我们需要创建一个控制器来处理路由的请求。在这里,我们可以使用 `php artisan make:controller` 命令来创建控制器。在控制器中,我们定义了一个 `create` 方法,它接收类别 ID 并保存新的文章。
#### 示例代码
```php
namespace App\Http\Controllers;
use App\Models\Post;
use Illuminate\Http\Request;
class PostController extends Controller
{
public function create($category_id, Request $request)
{
$post = new Post();
$post->category_id = $category_id;
$post->title = $request->input('title');
$post->content = $request->input('content');
$post->save();
return redirect()->back()->with('success', 'Post has been created successfully.');
}
}
```php
namespace App\Http\Controllers;
use App\Models\Post;
use Illuminate\Http\Request;
class PostController extends Controller
{
public function create($category_id, Request $request)
{
$post = new Post();
$post->category_id = $category_id;
$post->title = $request->input('title');
$post->content = $request->input('content');
$post->save();
return redirect()->back()->with('success', 'Post has been created successfully.');
}
}
### 第 3 步:创建视图
最后,我们需要创建一个视图来显示表单,以便管理员可以在其中输入标题和内容,然后将其保存并发布到特定类别的文章。我们可以使用 `blade` 模板引擎来创建视图。在视图中,我们将使用诸如 `csrf_token` 等助手函数来保护我们的表单免受 CSRF 攻击。
#### 示例代码
```php
<form action="{{ route('post-category.create', ['category_id' => $category->id]) }}" method="POST">
@csrf
<div class="form-group">
<label for="title">Title</label>
<input type="text" name="title" class="form-control" placeholder="Enter title">
</div>
<div class="form-group">
<label for="content">Content</label>
<textarea name="content" class="form-control" rows="5" placeholder="Enter content"></textarea>
</div>
<button type="submit" class="btn btn-primary">Create</button>
</form>
```php
<form action="{{ route('post-category.create', ['category_id' => $category->id]) }}" method="POST">
@csrf
<div class="form-group">
<label for="title">Title</label>
<input type="text" name="title" class="form-control" placeholder="Enter title">
</div>
<div class="form-group">
<label for="content">Content</label>
<textarea name="content" class="form-control" rows="5" placeholder="Enter content"></textarea>
</div>
<button type="submit" class="btn btn-primary">Create</button>
</form>
## 结论
在 Laravel 应用程序中发布特定分类的文章并不难。只需要按照上述步骤,我们可以创建一个控制器方法来处理请求,并将其连接到路由,然后创建一个视图,以便管理员可以输入文章标题和内容。完整的代码片段如下:
```markdown
### 路由
```php
Route::post('/post-category/{category_id}', 'PostController@create')->name('post-category.create');
namespace App\Http\Controllers;
use App\Models\Post;
use Illuminate\Http\Request;
class PostController extends Controller
{
public function create($category_id, Request $request)
{
$post = new Post();
$post->category_id = $category_id;
$post->title = $request->input('title');
$post->content = $request->input('content');
$post->save();
return redirect()->back()->with('success', 'Post has been created successfully.');
}
}
<form action="{{ route('post-category.create', ['category_id' => $category->id]) }}" method="POST">
@csrf
<div class="form-group">
<label for="title">Title</label>
<input type="text" name="title" class="form-control" placeholder="Enter title">
</div>
<div class="form-group">
<label for="content">Content</label>
<textarea name="content" class="form-control" rows="5" placeholder="Enter content"></textarea>
</div>
<button type="submit" class="btn btn-primary">Create</button>
</form>
请注意,上述代码仅供参考。为了使应用程序更加健壮和安全,请务必实施适当的输入验证,并使用适当的技术来保护您的应用程序免受各种攻击。