【问题标题】:Dynamic text fields in pages with LaravelLaravel 页面中的动态文本字段
【发布时间】:2020-09-07 16:56:06
【问题描述】:

我希望您就我的大多数项目中经常出现的问题提供帮助/提示

例如,我想创建一个包含一堆页面的网站,并在页面的不同位置(一些在页面顶部,一些在其他位置)创建一些文本字段。情况是我希望这些文本字段是动态的(能够在数据库上存储、编辑、显示、删除),但我不知道我的页面迁移的架构是什么,所以每当我想回显文本字段时值,即 $page->field1, $page->field2

我认为以下方法不是在我的迁移中定义字段的正确方法,所以我想帮助我,哪个是最好的!

public function up()
{
    Schema::create('pages', function (Blueprint $table) {
        $table->increments('id');
        $table->string('title');
        $table->string('field1');
        $table->string('field2');
        $table->string('field3');
        $table->string('field4');
        $table->timestamps();
    });
}

提前感谢您的帮助!

【问题讨论】:

  • 我们使用专用模型 HelpText 来处理此类事情。示例: {{ HelpText::get('splash.some_message') }} 将呈现翻译文本。而且,如果以管理员身份登录,我们将呈现一个小的编辑按钮/链接以允许编辑

标签: php mysql laravel content-management-system


【解决方案1】:

我曾经做过以下实现相同的事情。 在页面上为您的内容创建一个新模型。我称之为内容。 php artisan make:model Content -m

在迁移中,您添加所需的属性并创建与 Page 模型的关系。

    Schema::create('pages', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('page_id')->references('id')->on('pages');
        $table->string('body'); // the actual text
        $table->integer('page_position');
        $table->timestamps();
    });

作为简单示例,您可以使用“page_position”表在刀片视图中的特定位置呈现对象的信息。

在您的页面模型上,您创建访问属于该页面的内容模型的方法。

class Page extends Model
{
    /**
     * Get the content models related to this page.
     */
    public function contents()
    {
        return $this->hasMany('App\Content');
    }
}

然后就可以通过调用关系来访问所有相关的内容了

 foreach($page->contents as $content){
      $text = $content->body;
 }

请务必阅读Eloquent: Relationships

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-10
    • 2020-03-31
    • 2016-03-05
    • 1970-01-01
    • 2019-06-09
    • 2015-07-17
    • 1970-01-01
    • 2021-10-25
    相关资源
    最近更新 更多