concrete5.7 블록 유형(최소)에 입력 값을 저장하는 기능 추가

5929 단어 PHPconcrete5

개시하다


마지막으로 제작된 블록 유형는 구역에 설정된 정해진 문자열(Hello, World 인코더 33;)만 표시됩니다.이번에는 블록의 편집 화면에 입력한 문자열로 바꾸고 싶습니다.

화면 이미지


화면 편집


010.png

화면을 공개하다



규격.

  • 표시할 문자열을 한 줄 입력할 수 있는 input을 만듭니다.
  • SingleLine의 이름.
  • /application/blocks/single_line/에서 생성됩니다.
  • 이번에 제작된 서류는 다음과 같은 5개다.
  • db.xml
    controller.php
    add.php
    edit.php
    view.php
    
    각 문서의 설명은concerete5japan의카탈로그 구조 및 개념를 참고하십시오.

    db.xml


    편집 화면에 입력한 정보를 저장하는 테이블의 구조를 설명합니다.
    표명은 이름 충돌을 최대한 피하기 위해 먼저 bt의 접두사를 붙이는 습관이 있다.
    필드에 지정할 수 있는 유형 등에 대한 자세한 내용은 concerete 5입니다.org의 db.xml in the Doctrine XML Format페이지를 보십시오.
    /application/blocks/single_line/db.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <schema
      xmlns="http://www.concrete5.org/doctrine-xml/0.5"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.concrete5.org/doctrine-xml/0.5 http://concrete5.github.io/doctrine-xml/doctrine-xml-0.5.xsd">
    
      <table name="btSingleLine">
        <field name="bID" type="integer">
          <unsigned/>
          <key/>
        </field>
        <field name="content" type="text"/>
      </table>
    
    </schema>
    
    블록 유형이 설치되어 있는 경우 데이터베이스에 테이블을 작성합니다.
    CREATE TABLE `btSingleLine` (
        `bID` INT(10) UNSIGNED NOT NULL,
        `content` LONGTEXT NULL COLLATE 'utf8_unicode_ci',
        PRIMARY KEY (`bID`)
    )
    COLLATE='utf8_unicode_ci'
    ENGINE=InnoDB
    ;
    
    작성된 테이블은 다음과 같이 구성되어 있는 MySQL입니다.

    controller.php


    몇 가지 수정이 필요한데, 주로 관계를 설정한다.
    /application/blocks/single_line/controller.php
    <?php
    namespace Application\Block\SingleLine;
    use \Concrete\Core\Block\BlockController;
    
    class Controller extends BlockController {
    
        // db.xml で指定したテーブル名を記述します。
        protected $btTable = 'btSingleLine';
    
      // キャッシュに関する設定を行います。
      // キャッシュするには true を、しない場合は false を指定。
      protected $btCacheBlockRecord = true;
      protected $btCacheBlockOutput = true;
      protected $btCacheBlockOutputOnPost = true;
      protected $btCacheBlockOutputForRegisteredUsers = true;
    
      // ブロックタイプの説明を出力
      public function getBlockTypeDescription() {
        return t("1行のテキストを表示します。");
      }
    
      // ブロックタイプのタイトルを出力
      public function getBlockTypeName() {
        return t("1行テキスト");
      }
    
    }
    
    protected $btTable = 'btSingleLine';db.xml에서 지정한 데이터베이스 이름을 지정합니다.namespace Application\Block\SingleLine;폴더와 이름을 조정합니다.public function getBlockTypeDescription() public function getBlockTypeName()블록 유형에 따라 수정됩니다.

    add.php


    블록 유형을 영역으로 끌 때 HTML을 설명합니다.이번에는 한 줄의 문자를 입력할 수 있다.<?php echo $form->text('content') ?>첫 번째 인자로 지정되었습니다. 'concent' 는db입니다.xml에서 지정한 필드 이름과 일치하십시오.
    /application/blocks/single_line/add.php
    <?php
        // おまじない
        defined('C5_EXECUTE') or die(_("Access Denied."));
        // フォームヘルパー読み込み
        $form = Core::make('helper/form');
    ?>
    <label class="control-label"><?php echo t('1行テキスト')?></label>
    <?php echo $form->text('content') ?>
    

    edit.php


    블록을 편집할 때 HTML을 설명합니다.add.php와 거의 같다.<?php echo $form->text('content', $content) ?>두 번째 매개 변수의 차이는db입니다.xml에서 지정한 콘텐츠 필드를 지정했습니다.
    이렇게 하면 편집 시 테이블에 저장된 정보가 기본값으로 표시됩니다.
    /application/blocks/single_line/edit.php
    <?php
        // おまじない
        defined('C5_EXECUTE') or die(_("Access Denied."));
        // フォームヘルパー読み込み
        $form = Core::make('helper/form');
    ?>
    <label class="control-label"><?php echo t('1行テキスト')?></label>
    <?php echo $form->text('content', $content) ?>
    

    view.php


    디스플레이에 사용된 HTML을 기록합니다.h()는 도피를 묶는다.
    /application/blocks/single_line/view.php
    <?php
        // おまじない
        defined('C5_EXECUTE') or die(_("Access Denied."));
    ?>
    <div><?php echo h($content) ?></div>
    

    최후


    개발 중db입니다.xml을 만들기 전에 블록 형식을 설치한 다음db를 설치합니다.xml을 만들면 데이터베이스 주위에 오류가 발생합니다.블록 유형 삭제조차 어려워졌습니다.
    대책으로db.xml 이름을 바꾸고 블록 형식을 삭제합니다.그 다음,db.이름을 xml에 넣고 설치하면 표를 다시 만들어서 순조롭게 작동할 수 있습니다.
    여러 파일을 만들어야 하지만 파일 사이에 이름을 통일해야 하는 부분이 많기 때문에 제대로 작동하지 않는다면 타자 오류가 없는지 꼼꼼히 살펴보는 것이 좋다.

    좋은 웹페이지 즐겨찾기