Octobercms增加数据库中表的字段

2018-10-07  本文已影响0人  背着小猪去旅行

需求是这样的,网站有一个成员版块。这个版块也用octobercms自带的blog(博客)插件来做,但是有个问题,成员版块(members)包括两个额外的成员坐标的字段,于是我按照教学视频,扩展了一个插件出来,并且已经可以使用了。如下图所示。


联盟成员表单

现在需要增加一个新链接的字段,通过点击这个链接,可以跳转到对应的成员的网站,如下图。


点击进入官网,跳转到对应的网站

需要以下几个步骤:

  1. 在表jimmy_member_members中增加link字段
  2. 在后台的表单中增加link字段的输入框,并在添加和修改时更新数据表中对应的数据
  3. 在前台展示link字段
  4. 进行测试
在表jimmy_member_members中增加link字段

updates文件夹下面已有的member表的migrate文件create_members_table.php,增加一个用于加入字段的文件add_links_to_members_table.php

<?php namespace Jimmy\Member\Updates;

use Schema;
use October\Rain\Database\Schema\Blueprint;
use October\Rain\Database\Updates\Migration;

class AddLinksToMembersTable extends Migration
{
    public function up()
    {
        Schema::table('jimmy_member_members', function(Blueprint $table) {
            $table->string('link',100)->nullable();
        });
    }

    public function down()
    {
        Schema::table('jimmy_member_members' , function(Blueprint $table){
            $table->drop_column('link');
        });
        
    }
}

估计Octobercms是根据version.yaml来执行migrate,因此在version.yaml中增加版本信息

1.0.3:
      - Add link column to members table
      - add_links_to_members_table.php

执行php artisan october:up,如下图


图片.png

查看members表,确定增加了一个link字段


jimmy_member_members表
在后台的表单中增加link字段的输入框,并在添加和修改时更新数据表中对应的数据

修改Plugin.php文件,在boot方法中,增加link对应的字表单段

/**
     * Boot method, called right before the request route.
     *
     * @return array
     */
    public function boot()
    {
        PostModel::extend(function($model){
            $model->hasOne['member'] = ['Jimmy\Member\Models\Member'];
        });

        PostsController::extendFormFields(function($form , $model , $context){

            if (!$model instanceof PostModel)
                return ;

            if (!$model->exists)
                return;

            MemberModel::getFromPost($model);
            
            $form->addSecondaryTabFields([

                'member[left]' => [
                    'label' => '坐标(左)' ,
                    'tab' => '联盟成员',
                    'type' => 'text'
                ] , 
                'member[top]' => [
                    'label' => '坐标(上)' ,
                    'tab' => '联盟成员',
                    'type' => 'text'
                ] , 
                'member[link]' => [
                    'label' => '链接地址' ,
                    'tab' => '联盟成员',
                    'type' => 'text'
                ] ,
            ]);

            // MemberModel::getFromPost($model);
        });
    }

打开后台查看是否存在link字段,并进行添加及修改测试,如下图


图片.png
在前台展示link字段

在“联盟成员”页面,显示出相应的数据


增加link字段数据显示

也就是themes/changjiang/pages/member.htm文件

{% set posts = blogPosts.posts %}
<script>
    var pointLst = [
    {% for post in posts %}
    {
        'id':'p{{ post.id}}',
        'tit':'{{ post.title}}',
        'txt':"{{ post.content|replace({"\r\n":'<br />'}) }}",
        {% if post.member.left %}'left':{{ post.member.left}},{% endif %}
        {% if post.member.top %}'top':{{ post.member.top}},{% endif %}
        {% if post.member.link %}'link':'{{ post.member.link}}'{% endif %}
    },
    {% endfor %}
    ]
</script>
进行测试

修改数据


图片.png

确认数据是否被正常显示


link字段的内容被正常显示
上一篇下一篇

猜你喜欢

热点阅读