Редактирование записи в модуле - Дизайн и модификация Invision Power Board

Перейти к содержимому

 

СвернутьПрикрепленные теги

Теги не найдены

Страница 1 из 1

Редактирование записи в модуле

#1 Пользователь не на сайте   TemKa_SD ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 464
  • Регистрация: 16-Январь 18
  • Репутация: 6
  • Откуда:Спасск-Дальний
  • IPB version:4.1.x
 

Отправлено 23 Октябрь 2018 - 09:55

Здравствуйте. Пишу просто модуль, для добавления/редактирования/удаления записей из БД. Получилось следующее:

<?php


namespace IPS\sharedstats\modules\admin\stats;

/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
	header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
	exit;
}

/**
 * announce
 */
class _announce extends \IPS\Dispatcher\Controller
{
	/**
	 * Execute
	 *
	 * @return	void
	 */
	public function execute()
	{
		\IPS\Dispatcher::i()->checkAcpPermission( 'Can change announce?' );
		\IPS\sharedstats\DB::get();
		parent::execute();
	}
	
	/**
	 * Manage
	 *
	 * @return	void
	 */
	protected function manage()
	{
		/* Create the table */
		$table = new \IPS\sharedstats\DbIntegration\Db( 'stats_announces', \IPS\Http\Url::internal( 'app=sharedstats&module=stats&controller=announce' ), NULL, NULL, NULL, 'stats' );
		$table->langPrefix = 'sharedstats_stats_announce_';

        /* Root buttons */
        $table->rootButtons = array(
            'add' => array(
				'icon'  => 'cross',
				'title' => 'sharedstats_stats_announce_announce_add',
				'link' => \IPS\Http\Url::internal( 'app=sharedstats&module=stats&controller=announce&do=add' ),
            )
        );

        /* Row buttons */
        $table->rowButtons = function ( $row )
        {
			$return['edit'] = array(
				'icon'  => 'pencil',
				'title' => 'edit',
				'link' => \IPS\Http\Url::internal( 'app=sharedstats&module=stats&controller=announce&do=edit&id=' . $row['id'] ),
			);
			$return['del'] = array(
				'icon' => 'times-circle',
				'title' => 'sharedstats_stats_announce_announce_delete',
				'link' => \IPS\Http\Url::internal( 'app=sharedstats&module=stats&controller=announce&do=delete&id=' . $row['id'] ),
			);
            return $return;
        };

		/* Display */
		\IPS\Output::i()->title = \IPS\Member::loggedIn()->language()->addToStack('menu__sharedstats_stats_announce');
		\IPS\Output::i()->output	= \IPS\Theme::i()->getTemplate( 'global', 'core' )->block( 'title', (string) $table );
	}

    protected function add()
    {
        $form = new \IPS\Helpers\Form();
        $form->addHeader( 'sharedstats_stats_announce_announce_add' );
        $form->add( new \IPS\Helpers\Form\TextArea( 'sharedstats_stats_announce_announce_add', null, true));

        if ( $values = $form->values() )
        {
	        $ann = new \IPS\sharedstats\Records\Announce;
	        $ann->text = mb_strtolower($values['sharedstats_stats_announce_announce_add']);
	        $ann->save();

	        \IPS\Output::i()->redirect(\IPS\Http\Url::internal( 'app=sharedstats&module=stats&controller=announce', 'admin' ), 'sharedstats_stats_announce_announce_added');
        }

        \IPS\Output::i()->output = $form;
    }

    protected function edit()
    {
    	$id = \IPS\Request::i()->id;
    	$announce = \IPS\sharedstats\Records\Announce::load($id);

        $form = new \IPS\Helpers\Form();
        $form->addHeader( 'sharedstats_stats_announce_announce_add' );
        $form->add( new \IPS\Helpers\Form\TextArea( 'sharedstats_stats_announce_announce_add', null, true));

        if ( $values = $form->values() )
        {
	        $announce->text = mb_strtolower($values['sharedstats_stats_announce_announce_add']);
	        $announce->save();

	        \IPS\Output::i()->redirect(\IPS\Http\Url::internal( 'app=sharedstats&module=stats&controller=announce', 'admin' ), 'sharedstats_stats_announce_announce_added');
        }

        \IPS\Output::i()->output = $form;
    }

	protected function delete()
    {
        $id = \IPS\Request::i()->id;
        $announce = \IPS\sharedstats\Records\Announce::load($id);
        $announce->delete();
        \IPS\Output::i()->redirect(\IPS\Http\Url::internal( 'app=sharedstats&module=stats&controller=announce', 'admin' ), 'sharedstats_stats_announce_announce_deleted');
	}
}


Не могу вывести форму редактирования, не отображается текст: http://prntscr.com/l9bo0h не обращайте внимание на названия, функционал взят из формы добавления.
0

#2 Пользователь не на сайте   TemKa_SD ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 464
  • Регистрация: 16-Январь 18
  • Репутация: 6
  • Откуда:Спасск-Дальний
  • IPB version:4.1.x
 

Отправлено 23 Октябрь 2018 - 10:00

Извиняюсь, сам сделал.

$form->add( new \IPS\Helpers\Form\TextArea( 'sharedstats_stats_announce_announce_add', $announce->text, true));

0

#3 Пользователь не на сайте   TemKa_SD ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 464
  • Регистрация: 16-Январь 18
  • Репутация: 6
  • Откуда:Спасск-Дальний
  • IPB version:4.1.x
 

Отправлено 23 Октябрь 2018 - 10:16

Скажите вот что, а то мне непонятно.

        $form->add( new \IPS\Helpers\Form\TextArea( 'sharedstats_stats_announce_announce_add', null, true));

        if ( $values = $form->values() )
        {
	        $ann->text = mb_strtolower($values['sharedstats_stats_announce_announce_add']);


Текст sharedstats_stats_announce_announce_add - это фраза из языкового файла, переводится она как Добавить объявление. По этой фразе идет инициализация переменной по котором заполняется форма, почему оно так работает, когда переменная на русском в двух словах?
0

#4 Пользователь не на сайте   newbie ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 3 676
  • Регистрация: 26-Октябрь 11
  • Репутация: 1 448
  • IPB version:I have no IPB
 

Отправлено 24 Октябрь 2018 - 09:07

Просмотреть сообщениеTemKa_SD сказал(а):

По этой фразе идет инициализация переменной по котором заполняется форма, почему оно так работает, когда переменная на русском в двух словах?

Не понятно, что не понятно.
Ключ sharedstats_stats_announce_announce_add можно использовать где угодно
{lang="sharedstats_stats_announce_announce_add"}

{setting="sharedstats_stats_announce_announce_add"}

и т.д.
0

Сообщить об этой теме:


Страница 1 из 1


Быстрый ответ

  

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2019 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна