我们试着直接在Select中输入新的演员
点击保存
如何实现随时在Select中输入新的演员。我们将采用Ajax方式完成,在提交保存视频之前,通过Ajax方式实现提前于保存视频之前,保存演员信息。这样就不会出现上述的错误。
File:plugins/raiseinfo/movies/formwidgets/Actorbox.php
public function get
上一节我们通过actor组件为首页添加了组件,显示了演员的列表。
下面我们将为组件添加一些属性:defineProperties
这个函数会返回一个数组,数组里面的每个数组将返回的是每个选项
File:plugins\raiseinfo\movies\components\Actors.php
public function defineProperties()
{
return [
'results' => [
'title' => '显示演员的个数',
'description' => '您希望显示多少个演员?',
'default' => 0,
'validationPattern' => '^[0-9]+$',
'validationMessage' => '只允许输入数字。'
]
];
}但是,我们只是设置了选项,这个选项并没有对数据进行控制。下面解决使用这个选项控制数据的显示:
File:plugins\raiseinfo\movies\components\Actors.php
protected function loadActors()
{
$query = Actor::all();
if($this->property('results') > 0){
$query = $query->take($this->property('results'));
}
return $query;
}File:plugins\raiseinfo\movies\components\Actors.php
public function defineProperties()
{
return [
'results' => [
'title' => '显示演员的个数',
本节将创建有关actor的组件:
首先创建一下目录结构
首先创建插件的基本功能raiseinfo/movies/components/Actors.php
<?php namespace Raiseinfo\Movies\Components; use Cms\Classes\ComponentBase; use Raiseinfo\Movies\Models\Actor;
我们试着直接在Select中输入新的演员
点击保存
如何实现随时在Select中输入新的演员。我们将采用Ajax方式完成,在提交保存视频之前,通过Ajax方式实现提前于保存视频之前,保存演员信息。这样就不会出现上述的错误。
File:plugins/raiseinfo/movies/formwidgets/Actorbox.php
public function get
上节我们只是建立了小插件,但是数据是模拟的,我们希望将数据存储起来,那么我们就需要通过关联表将数据与视频表关联并保存,下面我们打开Builder,创建演员表
【database】
【Models】
【Models】——【Forms】
【Models】——【Lists】
【Models】——【Backend Menu】
【Models】——【Contro
在上一节中我们是使用repeater字段存储演员信息的,当然这不是最佳的方式,我们希望,演员的信息能够存储在单独的表中,而且演员的信息可能需要更多的字段进行存储。然后将演员表和其他表进行关联,就好像视频表和风格表之间的关联一样。
只是我们不得不使用类似于上面的方式,采用复选框的形式进行风格的选择。这个肯定不是让你最满意的方式,在这一节和下一节,我们将讨论如何自定义表单控件,并将小部件连
Repeater字段是采取Json数据存储多条数据的字段。
【Builder】——【Database】——【raiseinfo_movies_】
为表添加一个新的列:actors
【Models】——【Movie】——【Forms】
分别添加演员姓名和年龄
编辑视频信息:增加演员信息
提示错误
编辑:pluginsraiseinfomoviesmodelsMovie.php
protected $jsonable = ['actors'];
再说保存则错误消失。这样演员信息就被保存到了数据库的actors字段中,以Json格式存储。
查看数据库即可印证上述的结论。
Repeater数据存储到数据中后,如何在前段显示这些数据呢
themesraiseinfopagesmovie-single.htm
<h3>演员</h3>
{% for actor in record.actors %}
{{ actor.actor_name }}
{% endfor %}这样就显示了视频的演员信息了,但是,这不是最佳的存储演员信息的方法,我们将到后面使用数据库表的方式存储演员的信息。这里通过这个例子只是说明repeater这种字段的用法。
Beanstalkd,一个高性能、轻量级的分布式内存队列系统,最初设计的目的是想通过后台异步执行耗时的任务来降低高容量Web应用系统的页面访问延迟,支持过有9.5 million用户的Facebook Causes应用。后来开源,现在有PostRank大规模部署和使用,每天处理百万级任务。Beanstalkd是典型的类Memcached设计,协议和使用方式都是同样的风格,所以使用过