Octobercms增加数据库中表的字段
2018-10-07 本文已影响0人
背着小猪去旅行
需求是这样的,网站有一个成员版块。这个版块也用octobercms自带的blog(博客)插件来做,但是有个问题,成员版块(members)包括两个额外的成员坐标的字段,于是我按照教学视频,扩展了一个插件出来,并且已经可以使用了。如下图所示。
联盟成员表单
现在需要增加一个新链接的字段,通过点击这个链接,可以跳转到对应的成员的网站,如下图。
点击进入官网,跳转到对应的网站
需要以下几个步骤:
- 在表jimmy_member_members中增加link字段
- 在后台的表单中增加link字段的输入框,并在添加和修改时更新数据表中对应的数据
- 在前台展示link字段
- 进行测试
在表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字段的内容被正常显示