我们试着直接在Select中输入新的演员
点击保存
如何实现随时在Select中输入新的演员。我们将采用Ajax方式完成,在提交保存视频之前,通过Ajax方式实现提前于保存视频之前,保存演员信息。这样就不会出现上述的错误。
File:plugins/raiseinfo/movies/formwidgets/Actorbox.php
public function get
In this video series we are going to get familiar with October CMS. A great Laravel based CMS. We are going to be creating themes, plugins, learn about administr
首先准备目录,我们将复制contact插件中的contactform组件:
重命名和目录/文件: \plugins\raiseinfo\movies\components\contactform \plugins\raiseinfo\movies\components\ContactForm.php 到: \plugins\raiseinfo\movies\components\actorform \plugins\raiseinfo\movies\components\ActorForm.php
下面修改拷贝过来的文件: \plugins\raiseinfo\movies\components\ActorForm.php
namespace Raiseinfo\Movies\Components; use Cms\Classes\ComponentBase; class ActorForm extends ComponentBase { public function componentDetails() { return [ 'name' => 'Actor Form', 'description' => 'Enter actor form' ]; } public function onSave() { } }
\plugins\raiseinfo\movies\components\actorform\default.htm
<form data-request="onSave"> <label>Name:</label> <input type="text" name="name" class="form-control"> <label>Last name:</label> <input type="text" name="lastname" class="form-control"> <button type="submit" class="btn btn-success form-control">Save<
针对上一节的表单添加验证功能
File:plugins\raiseinfo\contact\components\ContactForm.php use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Redirect; ... public function onSend() { $validator = Validator::make( [ 'name' => Input::get('name'), 'email' => Input::get('email') ], [ 'name' => 'required|min:5', 'email' => 'required|email' ] ); if($validator->fails()){ return Redirect::back()->withErrors($validator); }else{ $vars = [ 'name' => Input::get('name'), 'email' => Input::get('email'), 'content' => Input::get('content') ]; // views/mail/message/htm Mail::send('raiseinfo.contact::mail.message', $vars, function($message) { $message->to('[email protected]', 'Admin Person'); $message->sub
邮件设置:config/mail.php;设置为smtp。
创建插件Contact
打开编辑器,在contact插件目录下创建components目录,并在目录下创建表单文件:ContactForm.php
定义组件
File:plugins\raiseinfo\contact\components\ContactForm.php <?php namespace Raiseinfo\Contact\Components; use Cms\Classes\ComponentBase; class ContactForm extends ComponentBase { public function componentDetails() { // TODO: Implement componentDetails() method. return [ 'name' => 'Contact Form', 'description' => 'Simple contact form' ]; } }
File:pluginsraiseinfocontactPlugin.php
<?php namespace Raiseinfo\Contact; use System\Classes\PluginBase; class Plugin extends PluginBase { public function registerComponents() { return [ 'Raiseinfo\Contact\Components\ContactForm' => 'contactform', ]; } public function registerSettings() { } }
增加新页面:
查看页面前端,确认已经生效,只是插件没有定义htm,所以没有内容可以显示。
下面编辑表单内容:
File:plugins\raiseinfo\contact\components\contactform\default.htm <form action="" class="form-group
上一节我们通过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