📜  cout post on category in controller laravel - PHP (1)

📅  最后修改于: 2023-12-03 15:14:15.987000             🧑  作者: Mango

在 Laravel 控制器中发布特定分类的文章 - PHP

在 Laravel 应用程序中,在控制器中发布特定分类的文章是一个常见的任务。这可以通过使用模型和 Eloquent ORM 来完成,这样我们就可以将文章数据存储在数据库中。

步骤

以下是发布特定分类的文章所需的步骤:

第 1 步:创建路由

首先,我们需要在 routes/web.php 文件中定义路由来处理我们的请求。在这里,我们可以定义一个路由,以响应 POST 请求并将其指向特定的控制器方法。

示例代码

Route::post('/post-category/{category_id}', 'PostController@create')->name('post-category.create');

Markdown 格式

```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.');
    }
}

Markdown 格式

```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>

Markdown 格式

```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>

请注意,上述代码仅供参考。为了使应用程序更加健壮和安全,请务必实施适当的输入验证,并使用适当的技术来保护您的应用程序免受各种攻击。