Подсказки для заполнения массива в PHPStorm

StalkerClasses

Новичок
Есть массив. В нем может быть ряд различных параметров ключ=значение.
Возможно ли для PHPStorm составить схему с подсказками по заполнению данного массива?

В Modx-например на основе массивов описываются элементы содержимого.
PHP:
<?php

    return [
        'title' => 'Two columns: image and text',

//        'show_in_templates' => [ 4 ],

//        'show_in_docs' => [ 2 ],

//        'hide_in_docs' => [ 5 ],
       
//        'order' => 1,
       
        'image' => 'assets/plugins/pagebuilder/images/2col-photo-text.jpg',

//        'container' => 'default',


        'fields' => [
            'image' => [
                'caption' => 'Image',
                'type'    => 'image',
            ],

            'richtext' => [
                'caption' => 'Text',
                'type'    => 'richtext',
                'default' => '',
                'theme'   => 'mini',
                'options' => [
                    'height' => '200px',
                ],
            ],
        ],
    ];
 

Valick

Новичок
Нормальному массиву не нужны подсказки. Забудь ты уже про наследие Битрикс.
 

StalkerClasses

Новичок

ArrayShape
Массив имеет похожую структуру как привел пример в случае с Modx.
Возможно ли в принципе сделать такое описание с подсказкам. Посмотрел этот плагин и не увидел что бы он подходил к массивам.
 

StalkerClasses

Новичок
Приведу пример массива для которго хочу сделать подсказки:

PHP:
<?php
namespace Domain\Model;

class Experience extends \Model\ModelCrud
{
    /**
     * @var array
     */
    public static $CMS = [
        'thisIs' => 'ModelCrud',
        'name' => 'Опыт работы',
        'description' => 'Список',
        'defaultListTypeRender' => 2,
        'baseFields' => [
            'title',
            'sorting',
            'active'
        ],
        'dataFields' => [
            'prop_position' => [
                'type' => 'Input',
                'name' => 'Должность',
                'show' => 1,
            ],
            'prop_completed_work' => [
                'type' => 'Text.Rte',
                'name' => 'Выполненные работы',
                'show' => 1,
            ],
            'prop_extrnal_link' => [
                'type' => 'Input.Link',
                'name' => 'Ссылка',
                'show' => 1,
            ]
        ],
        'mediaFields' => [],
        'relationalFields' => []
    ];
}
Так выглядит образец моего массива...
 

Adelf

Administrator
Команда форума
Это плагином для шторма можно. Но даже не пытайся)
 

StalkerClasses

Новичок
Я нашел в интернете - что можно делать XSD-схемы для PHPStorm.
Нашел один наиболее интересный пример, который мне подходит по аналогичной задачи для XML - вставил его в PHPStorm.

HTML:
{namespace f=TYPO3\Fluid\ViewHelpers}
{namespace v=FluidTYPO3\Vhs\ViewHelpers}
<?xml version="1.0" encoding="UTF-8" ?>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en"
      xmlns:f="https://fluidtypo3.org/schemas/fluid-master.xsd"
      xmlns:flux="http://typo3.org/ns/FluidTYPO3/Flux/ViewHelpers"
      xmlns:v="http://typo3.org/ns/FluidTYPO3/Vhs/ViewHelpers"
      xmlns:w="http://typo3.org/ns/fluidwidget"
      data-namespace-typo3-fluid="true"
/>
<head>
    <title>Partials: MyPartial</title>
</head>
<body>
<f:section name="Main">
    <f:for

    <!-- Fluid goes here -->
</f:section>
</body>


https://docs.typo3.org/typo3cms/extensions/schemaker/stable/

По идее "xmlns:f="https://fluidtypo3.org/schemas/fluid-master.xsd" для вот этого куска кода должна подключится XSD-схема, которую можно посмотреть по ссылке. Т.е. теперь когда я буду набирать например <f: - то должен вывалиться список доступных функций, например <f:for. Но ничего не происходит. Вопрос как загрузить в PHPStorm такую схему?

Посмотрел есть например такой элемент
<xsd:element name="flashMessages">
И у него же есть атрибуты...
<xsd:attribute type="xsd:array" name="additionalAttributes" use="optional" default="NULL">
<xsd:attribute type="xsd:array" name="data" use="optional" default="NULL">
<xsd:attribute type="xsd:string" name="renderMode" use="optional" default="NULL">


Но подсказки не срабатывают.
 
Последнее редактирование:

StalkerClasses

Новичок
Да у меня есть тайпо3.
Почему не должен?
For описан в этом файле:

PHP:
https://fluidtypo3.org/schemas/fluid-master.xsd
<xsd:element name="for">
<xsd:annotation>
<xsd:documentation>
<![CDATA[ Loop view helper which can be used to interate over array. Implements what a basic foreach()-PHP-method does. = Examples = <code title="Simple Loop"> <f:for each="{0:1, 1:2, 2:3, 3:4}" as="foo">{foo}</f:for> </code> <output> 1234 </output> <code title="Output array key"> <ul> <f:for each="{fruit1: 'apple', fruit2: 'pear', fruit3: 'banana', fruit4: 'cherry'}" as="fruit" key="label"> <li>{label}: {fruit}</li> </f:for> </ul> </code> <output> <ul> <li>fruit1: apple</li> <li>fruit2: pear</li> <li>fruit3: banana</li> <li>fruit4: cherry</li> </ul> </output> <code title="Iteration information"> <ul> <f:for each="{0:1, 1:2, 2:3, 3:4}" as="foo" iteration="fooIterator"> <li>Index: {fooIterator.index} Cycle: {fooIterator.cycle} Total: {fooIterator.total}{f:if(condition: fooIterator.isEven, then: ' Even')}{f:if(condition: fooIterator.isOdd, then: ' Odd')}{f:if(condition: fooIterator.isFirst, then: ' First')}{f:if(condition: fooIterator.isLast, then: ' Last')}</li> </f:for> </ul> </code> <output> <ul> <li>Index: 0 Cycle: 1 Total: 4 Odd First</li> <li>Index: 1 Cycle: 2 Total: 4 Even</li> <li>Index: 2 Cycle: 3 Total: 4 Odd</li> <li>Index: 3 Cycle: 4 Total: 4 Even Last</li> </ul> </output> ]]>
</xsd:documentation>
</xsd:annotation>
<xsd:complexType mixed="true">
<xsd:sequence>
<xsd:any minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute type="xsd:array" name="each" use="required">
<xsd:annotation>
<xsd:documentation>
<![CDATA[ The array or \TYPO3\CMS\Extbase\Persistence\ObjectStorage to iterated over ]]>
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute type="xsd:string" name="as" use="required">
<xsd:annotation>
<xsd:documentation>
<![CDATA[ The name of the iteration variable ]]>
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute type="xsd:string" name="key" use="optional" default="''">
<xsd:annotation>
<xsd:documentation>
<![CDATA[ The name of the variable to store the current array key ]]>
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute type="xsd:boolean" name="reverse" use="optional" default="false">
<xsd:annotation>
<xsd:documentation>
<![CDATA[ If enabled, the iterator will start with the last element and proceed reversely ]]>
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute type="xsd:string" name="iteration" use="optional" default="NULL">
<xsd:annotation>
<xsd:documentation>
<![CDATA[ The name of the variable to store iteration information (index, cycle, isFirst, isLast, isEven, isOdd) ]]>
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
Вот например виде где это работает с 9:23 секунды...
 

StalkerClasses

Новичок
Спасибо за ответ. Плагин попробую. Плагин этот будет подсвечивать скорее всего только <f: - тэги.
Но еще есть 2 ряда популярных тэгов - это <flux: и <v:.

Я полагал что если добавить эти строки то PHPStorm загрузит схему

Код:
      xmlns:f="https://fluidtypo3.org/schemas/fluid-master.xsd"
      xmlns:flux="http://typo3.org/ns/FluidTYPO3/Flux/ViewHelpers"
      xmlns:v="http://typo3.org/ns/FluidTYPO3/Vhs/ViewHelpers"
      xmlns:w="http://typo3.org/ns/fluidwidget"
И будут работать подсказки. Без плагинов. Не пойму тогда зачем нужны такие атрибуты для тэга и такие xsd-схемы.
 

WMix

герр M:)ller
Партнер клуба
  • Auto completion for Fluid Layouts, Partials, Sections, ViewHelpers, inline ViewHelpers (Outside and inside of HTML tag attributes), ViewHelper arguments and most of the controller view parameters
на всякий случай, там еще enterprise имеется, ну и faq прочесть можно
 
Последнее редактирование:

StalkerClasses

Новичок
  • Auto completion for Fluid Layouts, Partials, Sections, ViewHelpers, inline ViewHelpers (Outside and inside of HTML tag attributes), ViewHelper arguments and most of the controller view parameters
на всякий случай, там еще enterprise имеется, ну и faq прочесть можно
Подсказки заработали: что сделал:

1) загрузил PHP-исходники (раньше пробовал 1 файл)
2) установил плагины (бесплатные) - они вроде как free
3) так оказывается теперь наймспейсы ищутся через: <html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true"> И это не файл... А ссылка на PHP-файл

Спасибо..
 
Сверху