新しいフレームワークの Form フォルダーを Zend Framework 1 のものと交換しようとしましたが、うまくいきませんでした。
また、ZF1 を新しい Form 2.0 フォルダのライブラリに向けようとしましたが、それも機能しません。
誰かがそれを行う方法を知っていますか?
新しいフレームワークの Form フォルダーを Zend Framework 1 のものと交換しようとしましたが、うまくいきませんでした。
また、ZF1 を新しい Form 2.0 フォルダのライブラリに向けようとしましたが、それも機能しません。
誰かがそれを行う方法を知っていますか?
ZF1 で ZF2 コンポーネントを使用することは可能であり、ほとんどの場合、比較的単純です。
まず、zf2 をライブラリ パスにクローンする必要があるため、cd して次のように入力しますlibrary
。
git clone https://github.com/zendframework/zf2.git Zf2
これにより、ライブラリの下に Zf2 フォルダーが作成されます。
ここで、zf2 ファイルの検索方法をオートローダーに伝える必要があります。ブートストラップに次を追加します:-
protected function _initZf2()
{
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->pushAutoloader(new App_Loader_Autoloader_Zf2(), 'Zend');
}
次に、オートローダーを作成します。私はこの行でapplication.iniに含まれているApp_という名前の名前空間を持っています:-
autoloadernamespaces[] = "App_"
App/Loader/Autoloader/Zf2.php にオートローダーを作成しました:-
class App_Loader_Autoloader_Zf2 implements Zend_Loader_Autoloader_Interface
{
public function autoload($class)
{
if(strstr($class, '\\')){
$zf2Class = explode('\\', $class);
$path = 'Zf2/library/' . implode('/', $zf2Class) . '.php';
include_once $path;
}
}
}
これで、zf1 は、正しい名前空間が提示されたときに zf2 クラスを見つける場所を認識します。Application/Forms/Zf2.php などのフォームを作成できます:-
use Zend\Form\Form;
use Zend\Form\Element;
use Zend\Form\Element\Text;
class Application_Form_Zf2 extends Form
{
public function prepareElements()
{
$this->add(array(
'name' => 'name',
'options' => array(
'label' => 'Your name',
),
'attributes' => array(
'type' => 'text',
),
));
}
}
これで、コントローラーで zf2 フォームをインスタンス化できます。
$this->view->form = new Application_Form_Zf2();
$this->view->form->prepareElements();
ZF1 ビューを使用しているため、ZF2 フォームのレンダリングに使用されるビュー ヘルパーに自動的にアクセスできないため、必要に応じてビューで明示的にインスタンス化する必要があります。
$form = $this->form;
$formHelper = new \Zend\Form\View\Helper\Form();
$formText = new \Zend\Form\View\Helper\FormText();
$formLabel = new \Zend\Form\View\Helper\FormLabel();
echo $formHelper->openTag($form);
echo $formLabel($form->get('name'));
echo $formText($form->get('name'));
echo $formHelper->closeTag($form);
これにより、次の HTML が出力されます。
<form action="" method="POST">
<label for="name">Your name</label>
<input name="name" type="text" value="">
</form>
この方法を使用すると、フォームの出力を細かく制御できます。上記の phtml ファイルに記述したコードの一部を ZF1 ビュー ヘルパーで非表示にすることをお勧めします。