За последние 24 часа нас посетили 91389 программистов и 7081 робот. Сейчас ищут 2198 программистов ...

Добавить input в div

Тема в разделе "PHP для новичков", создана пользователем Anton25, 5 мар 2018.

  1. Anton25

    Anton25 Новичок

    С нами с:
    4 мар 2018
    Сообщения:
    9
    Симпатии:
    0
    Очень нужна помощь. Я не особо в пхп, а поисковики не выдают адекватных результатов. Вот есть форма создания новой темы на форуме. Как в интересующий меня div вставить поле input(text) с указанием параметров?

    PHP:
    1. <?php class Forum_Form_Topic_Create extends Engine_Form
    2. {
    3.   public function init()
    4.   {
    5.     $settings = Engine_Api::_()->getApi('settings', 'core');
    6.     $this->setAction(Zend_Controller_Front::getInstance()->getRouter()->assemble(array()));
    7.     $this->setMethod("POST");
    8.     $this->setAttrib('name', 'forum_post_create');
    9.  
    10.     $this->addElement('Text', 'title', array(
    11.       'allowEmpty' => false,
    12.       'required' => true,
    13.       'filters' => array(
    14.         new Engine_Filter_Censor(),
    15.       ),
    16.     ));
    17.     $viewer = Engine_Api::_()->user()->getViewer();
    18.     $allowHtml = (bool) $settings->getSetting('forum_html', 0);
    19.     $allowBbcode = (bool) $settings->getSetting('forum_bbcode', 0);
    20.     if( !$allowHtml ) {
    21.       $filter = new Engine_Filter_HtmlSpecialChars();
    22.     } else {
    23.       $filter = new Engine_Filter_Html();
    24.       $filter->setForbiddenTags();
    25.       //$allowed_tags = array_map('trim', explode(',', Engine_Api::_()->authorization()->getPermission($viewer->level_id, 'forum', 'commentHtml')));
    26.       if( !$viewer->getIdentity() ) {
    27.         $allowed_tags = array_map('trim', explode(',', Engine_Api::_()->authorization()->getPermission(4, 'forum', 'commentHtml')));
    28.       }else{
    29.         $allowed_tags = array_map('trim', explode(',', Engine_Api::_()->authorization()->getPermission($viewer->level_id, 'forum', 'commentHtml')));
    30.       }
    31.       $filter->setAllowedTags($allowed_tags);
    32.     }
    33.     if( $allowHtml || $allowBbcode ) {
    34.       $upload_url = "";
    35. if(Engine_Api::_()->authorization()->isAllowed('album', $user, 'create')){
    36.         $upload_url = Zend_Controller_Front::getInstance()->getRouter()->assemble(array('action'=>'upload-photo'),'forum_photo',true);
    37.       }
    38.       $editorOptions = array(
    39.         'upload_url' => $upload_url,
    40.         'bbcode' => $settings->getSetting('forum_bbcode', 0),
    41.         'html' => $settings->getSetting('forum_html', 0)
    42.       );
    43.       if (!empty($upload_url))
    44.       {
    45.         $editorOptions['plugins'] = array(
    46.           'table', 'fullscreen', 'media', 'preview', 'paste',
    47.           'code', 'image', 'textcolor', 'jbimages', 'link'
    48.         );
    49.         $editorOptions['toolbar1'] = array(
    50.           'undo', 'redo', 'removeformat', 'pastetext', '|', 'code',
    51.           'media', 'image', 'jbimages', 'link', 'fullscreen',
    52.           'preview'
    53.         );
    54.       }
    55.       $this->addElement('TinyMce', 'body', array(
    56.         'disableLoadDefaultDecorators' => true,
    57.         'editorOptions' => $editorOptions,
    58.         'required' => true,
    59.         'allowEmpty' => false,
    60.         'decorators' => array('ViewHelper'),
    61.         'filters' => array(
    62.           $filter,
    63.           new Engine_Filter_Censor(),
    64.         ),
    65.       ));
    66.     }
    67.  
    68.     // Photo
    69.     $this->addElement('File', 'photo', array(
    70.       'label' => 'Attach a Photo',
    71.       'size' => '0',
    72.       ));
    73.     $this->getElement('photo')->getDecorator('label')->setOptions(array('escape' => false,'class' => 'buttonlink'));
    74.  
    75.     $show_captcha = Engine_Api::_()->getApi('settings', 'core')->core_spam_contact;
    76.     if( $show_captcha && ($show_captcha > 1 || !Engine_Api::_()->user()->getViewer()->getIdentity() ) ) {
    77.       $this->addElement('captcha', 'captcha', Engine_Api::_()->core()->getCaptchaOptions());
    78.     }
    79.  
    80.     $this->addElement('Button', 'submit', array(
    81.       'label' => 'Post Topic',
    82.       'type' => 'submit',
    83.       'ignore' => true,
    84.       'decorators' => array('ViewHelper')
    85.     ));
    86.     $this->addElement('Cancel', 'cancel', array(
    87.       'label' => 'cancel',
    88.       'link' => true,
    89.       'prependText' => ' or ',
    90.       'decorators' => array(
    91.         'ViewHelper'
    92.       )
    93.     ));
     
    #1 Anton25, 5 мар 2018
    Последнее редактирование модератором: 5 мар 2018
  2. Anton25

    Anton25 Новичок

    С нами с:
    4 мар 2018
    Сообщения:
    9
    Симпатии:
    0
    Уточню, что в коде блоки обозначены как Element. Если быть конкретнее, Input надо вставить в элемент File.
     
  3. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Может "После" элемента file? file это input type='file'. Просто берешь и вставляешь после
    PHP:
    1. $this->addElement('File', 'photo', array( 'label' => 'Attach a Photo', 'size' => '0', ));
    2. $this->addElement('Text', 'title', array(
    3.       'allowEmpty' => false,
    4.       'required' => true,
    5.       'filters' => array(
    6.         new Engine_Filter_Censor(),
    7.   ),
    8. ));
    9. // и т.д
     
    #3 nospiou, 5 мар 2018
    Последнее редактирование: 5 мар 2018
  4. Anton25

    Anton25 Новичок

    С нами с:
    4 мар 2018
    Сообщения:
    9
    Симпатии:
    0
    Нет, это input[type=text], который надо добавить в один div с input[type=file].
    addElement я уже пробовал, но тогда input оборачивается в отдельный div. Проблема как раз в том, что мне надо добавить в уже существующий.
     
  5. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Это нужно в самом движке добавить такую возможность. Лучше используй css.
     
  6. Anton25

    Anton25 Новичок

    С нами с:
    4 мар 2018
    Сообщения:
    9
    Симпатии:
    0
    В смысле в движке? А как с помощью CSS можно создать input и поместить в нужное место?
     
  7. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    с помощью css визуально можно сделать все. а если нужно физически тогда javascript
     
  8. Anton25

    Anton25 Новичок

    С нами с:
    4 мар 2018
    Сообщения:
    9
    Симпатии:
    0
    Нужно физически. И я прошу конкретной помощи, а не абстрактных советов. Пробовал пару скриптов, найденных в инете, но ничего не получилось.
     
  9. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Сомневаюсь вот прям очень сомневаюсь что тебе это нужно. Правильный совет с css тебе уже дали. Если хочешь переписать целyю ( я так подозреваю cms) у тебя есть extends Engine_Form значит там и нужно искать. Если не найдешь там смотри еще выше и еще выше. Или используй ide он быстро найдет addElement и покажет что там происходит.
     
  10. Anton25

    Anton25 Новичок

    С нами с:
    4 мар 2018
    Сообщения:
    9
    Симпатии:
    0
    Мне это очень нужно. Совет с css ни о чём без примера. Я специально привёл код, чтобы мне отвечали тем же. Что я должен искать в Engine_Form, выше и выше?
     
  11. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Исходя из вопросов тебе проще разобраться как с помощью css переместить объект туда куда нужно. Да нету здесь никакого кода. Код на 1000 классов а ты показал всего один который расширяет другой. В этом классе ты точно ничего сделать не сможешь. Ищи где формируется html и там создавай свой класс который будет принимать сразу 2 елемента. Это не PHP это ООП. Это как приложение на компе ты им пользуешься кнопочки нажимаешь настройки меняешь но код в другом месте. Обертка абстракция угадать не возможно
     
  12. keren

    keren Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    509
    Симпатии:
    40
    Приведи сначала свой пример, а если очень нужно и ничего не знаешь то на фриланс.
    Это не твой код, никто не знает что там внутри вызываемых методов каких-то классов.
     
  13. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    @Anton25, должен быть метод addGroup(), в качестве параметров получающий массив готовых элементов, созданных, например, посредством метода createElement().
     
  14. Anton25

    Anton25 Новичок

    С нами с:
    4 мар 2018
    Сообщения:
    9
    Симпатии:
    0
    С помощью CSS нельзя поместить объект туда, куда мне нужно. Хватит писать чушь! Я в курсе про абсолютное позиционирование, но мне это не подходит.
     
  15. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Не умею не знаю впервые слышу об css js php oop != нельзя
     
  16. Anton25

    Anton25 Новичок

    С нами с:
    4 мар 2018
    Сообщения:
    9
    Симпатии:
    0
    А подробней не подскажешь?
    --- Добавлено ---
    Вы все такие умные, но ни один не привёл ни одного примера! Только бла-бла-бла...
     
  17. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Так я тебе уже подсказал
    должен быть метод addGroup() = тебе предстоит его создать под свои нужды которые решаются при помощи css ты просто этого еще не понял. А тот который есть если он есть добавляет уже с дивами. Не запутывай себя учи css
    --- Добавлено ---
    Пример чего? Ты показываешь нам кактус и спрашиваешь где у него штурвал.
     
  18. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    @Anton25, вот, например, для Zend: Zend Form display groups decorators example
    Судя по коду из первого сообщения используется social engine.
    Ведь, например:
     
  19. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    and is built in an MVC (Model-View-Controller) structure
    Это где там у него MVC? )))
     
  20. Anton25

    Anton25 Новичок

    С нами с:
    4 мар 2018
    Сообщения:
    9
    Симпатии:
    0
    Да, это social engine.