PHP 및 PHP MVC 프레임워크용 시각적 구성 요소 라이브러리 (JQuery UI, Twitter Bootstrap, Semantic-UI)
phpMv-UI 웹사이트
phpMv-UI는 PHP용 시각적 구성 요소 라이브러리입니다. jQuery 및 UI 구성 요소(jQuery, Twitter Bootstrap, Semantic-UI)용 PHP 래퍼입니다.
종속성 주입을 사용하면 jQuery 개체를 PHP 프레임워크 컨테이너 에 주입하여 MVC 디자인 패턴을 존중하는 컨트롤러에서 jQuery 스크립트를 생성할 수 있습니다.
공통 위치나 프로젝트에 Composer를 설치합니다.
curl -s http://getcomposer.org/installer | php
다음과 같이 앱 디렉터리에 작곡가.json 파일을 만듭니다.
{
"require" : {
"phpmv/php-mv-ui" : " ^2.3 "
}
}
앱 디렉터리에서 작곡가 설치 프로그램을 실행합니다.
php composer.phar install
공통 위치나 프로젝트 내부에 저장소를 복제하면 됩니다.
git clone https://github.com/phpMv/phpMv-UI.git
phpMv-UI는 자동 로딩 클래스에 대한 PSR-4 권장 사항을 준수합니다. 어떤 PHP 프레임워크를 사용하든 "composer"를 사용하면 Composer 자동 로드 파일을 통합하는 것으로 충분합니다.
require_once ( " vendor/autoload.php " );
라이브러리는 기본적으로 app/config/config.php 구성 파일에 이미 로드되어 있습니다.
" di " => array (
" @exec " => array ( " jquery " => function ( $ controller ){
return Ajax php ubiquity JsUtils:: diSemantic ( $ controller );
})
),
Semantic-UI 버튼 생성 예시
/**
* @property AjaxphpubiquityJsUtils $jquery
*/
class ExempleController extends Controller{
public function index (){
$ semantic = $ this -> jquery -> semantic ();
$ button = $ semantic -> htmlButton ( " btTest " , " Test Button " );
echo $ button ;
}
}
Composer가 없으면 app/config/loader.php 파일을 사용하여 라이브러리를 로드할 수 있습니다.
$ loader = new Phalcon Loader ();
$ loader -> registerNamespaces ( array (
' Ajax ' => __DIR__ . ' /../vendor/phpmv/php-mv-ui/Ajax/ '
))-> register ();
애플리케이션 시작 시 서비스 파일 app/config/services.php 에 JQuery 서비스를 삽입하고 필요한 경우 Semantic, Bootstrap 또는 Jquery-ui를 인스턴스화해야 합니다.
$ di -> set ( " jquery " , function (){
$ jquery = new Ajax php phalcon JsUtils ();
$ jquery -> semantic ( new Ajax Semantic ()); //for Semantic UI
return $ jquery ;
});
Semantic-UI 버튼 생성 예시
use Phalcon Mvc Controller ;
use Ajax php phalcon JsUtils ;
/**
* @property JsUtils $jquery
*/
class ExempleController extends Controller{
public function indexAction (){
$ semantic = $ this -> jquery -> semantic ();
$ button = $ semantic -> htmlButton ( " btTest " , " Test Button " );
echo $ button ;
}
}
CodeIgniter가 Composer 자동 로더를 사용하도록 하려면 $config['composer_autoload']
TRUE
로 설정하거나 application/config/config.php 에서 사용자 정의 경로를 설정하면 됩니다.
그런 다음 JsUtils 클래스용 라이브러리를 생성해야 합니다.
application/libraries 폴더에 XsUtils 라이브러리(이름은 무료)를 생성합니다.
use Ajax php ci JsUtils ;
class XsUtils extends Ajax php ci JsUtils{
public function __construct (){
parent :: __construct ([ " semantic " => true , " debug " => false ]);
}
}
application/config/autoload.php 파일에 XsUtils 라이브러리 로딩을 추가합니다.
jquery 멤버는 컨트롤러에서 액세스할 수 있습니다.
$ autoload [ ' libraries ' ] = array ( ' XsUtils ' => ' jquery ' );
로드되면 $jquery 멤버를 사용하여 컨트롤러의 클래스에 액세스할 수 있습니다.
$ this -> jquery -> some_method ();
Composer 오토로더 파일을 사용하지 않는 경우 작곡가.json을 사용하여 phpMv-UI를 로드할 수도 있습니다.
"autoload" : {
"classmap" : [
...
],
"psr-4" : {
"Ajax \ " : " vendor/phpmv/php-mv-ui/Ajax "
}
},
bootstrap/app.php 파일에 싱글톤을 등록합니다:
$ app -> singleton ( Ajax php laravel JsUtils::class, function ( $ app ){
$ result = new Ajax php laravel JsUtils ();
$ result -> semantic ( new Ajax Semantic ());
return $ result ;
});
그런 다음 기본 클래스 컨트롤러 생성자에 JsUtils 클래스를 삽입하는 것이 가능합니다.
use Ajax php laravel JsUtils ;
class Controller extends BaseController{
use AuthorizesRequests, AuthorizesResources, DispatchesJobs, ValidatesRequests;
protected $ jquery ;
public function __construct ( JsUtils $ js ){
$ this -> jquery = $ js ;
}
public function getJquery () {
return $ this -> jquery ;
}
}
설치된 Composer 패키지의 클래스는 Composer 자동 로더를 사용하여 자동 로드될 수 있습니다. Composer 오토로더를 설치하려면 애플리케이션의 입력 스크립트에 다음 줄이 포함되어 있는지 확인하세요.
require ( __DIR__ . ' /../vendor/autoload.php ' );
require ( __DIR__ . ' /../vendor/yiisoft/yii2/Yii.php ' );
동일한 파일에서 새 종속성을 등록합니다.
Yii:: $ container -> setSingleton ( " AjaxphpyiiJsUtils " ,[ " bootstrap " => new Ajax Semantic ()]);
그런 다음 JsUtils 싱글톤을 컨트롤러에 주입할 수 있습니다.
namespace app controllers ;
use yii web Controller ;
use Ajax php yii JsUtils ;
class SiteController extends Controller{
protected $ jquery ;
public function __construct ( $ id , $ module , JsUtils $ js ){
parent :: __construct ( $ id , $ module );
$ this -> jquery = $ js ;
}
}
Composer 오토로더 파일을 사용하지 않는 경우 Ps4ClassLoader를 사용하여 phpMv-UI를 로드할 수도 있습니다.
use Symfony Component ClassLoader Psr4ClassLoader ;
require __DIR__ . ' /lib/ClassLoader/Psr4ClassLoader.php ' ;
$ loader = new Psr4ClassLoader ();
$ loader -> addPrefix ( ' Ajax \' , __DIR__ . ' /lib/phpmv/php-mv-ui/Ajax ' );
$ loader -> register ();
JquerySemantic
에서 상속되는 서비스 만들기
namespace App Services semantic ;
use Ajax php symfony JquerySemantic ;
class SemanticGui extends JquerySemantic{
}
config/services.yml 에서 자동 연결이 활성화되어 있는지 확인하세요.
services :
# default configuration for services in *this* file
_defaults :
autowire : true # Automatically injects dependencies in your services.
그런 다음 속성, 생성자 또는 설정자에 종속성 주입을 사용할 수 있습니다.
namespace App Controller ;
use Symfony Bundle FrameworkBundle Controller AbstractController ;
use App Services semantic SemanticGui ;
BarController extends AbstractController{
/**
* @var SemanticGui
*/
protected $ gui ;
public function loadViewWithAjaxButtonAction (){
$ bt = $ this -> gui -> semantic ()-> htmlButton ( ' button1 ' , ' a button ' );
$ bt -> getOnClick ( " /url " , ' #responseElement ' );
return $ this -> gui -> renderView ( " barView.html.twig " );
}
}
app/config/services.yml 파일에 2개의 서비스를 생성합니다.
parameters :
jquery.params :
semantic : true
services :
jquery :
class : AjaxphpsymfonyJsUtils
arguments : [%jquery.params%,'@router']
scope : request
app.default_controller :
class : AppBundleControllerDefaultController
arguments : ['@service_container','@jquery']
그런 다음 컨트롤러 생성자에 Symfony 컨테이너와 JsUtils 서비스를 삽입할 수 있습니다.
namespace AppBundle Controller ;
use Sensio Bundle FrameworkExtraBundle Configuration Route ;
use Symfony Bundle FrameworkBundle Controller Controller ;
use Symfony Component DependencyInjection ContainerInterface ;
use Ajax php symfony JsUtils ;
use AppBundle AppBundle ;
/**
* @Route(service="app.default_controller")
*/
class DefaultController extends Controller{
/**
* @var AjaxphpsymfonyJsUtils
*/
protected $ jquery ;
public function __construct ( ContainerInterface $ container , JsUtils $ js ){
$ this -> container = $ container ;
$ this -> jquery = $ js ;
}
}
Vendor/phpmv/php-mv-ui/Ajax/php/cakephp 에 있는 JsUtilsComponent.php 파일을 프로젝트의 src/controller/comComponent 폴더에 복사합니다.
src/controller/appController.php 에 있는 기본 컨트롤러 AppController 의 초기화 메소드에 JsUtils 컴포넌트 로딩을 추가하세요.
public function initialize (){
parent :: initialize ();
$ this -> loadComponent ( ' RequestHandler ' );
$ this -> loadComponent ( ' Flash ' );
$ this -> loadComponent ( ' JsUtils ' ,[ " semantic " => true ]);
}
$this->JsUtils->jquery
에서 컨트롤러의 jquery 객체에 액세스할 수 있습니다.
대부분의 IDE(예: Eclipse 또는 phpStorm)를 사용하여 $jquery
인스턴스에서 코드 완성을 얻으려면 컨트롤러 문서에 다음 속성을 추가해야 합니다.
/**
* @property AjaxJsUtils $jquery
*/
class MyController{
}