Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Funkcja output() widgetu żąda dużo pamięci (?)


X3nO

Rekomendowane odpowiedzi

Co ma Ci się wyświetlić? Jak nic tam nie ma?

 

// Use $this->output( $foo, $bar ); to return a string generated by the template set in init() or manually added via $widget->template( $callback ); // Note you MUST route output through $this->output() rather than calling \IPS\Theme::i()->getTemplate() because of the way widgets are cached

Odnośnik do komentarza
Udostępnij na innych stronach

<?php
/**
 * @brief		servers Widget
 * @author		<a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
 * @copyright	(c) Invision Power Services, Inc.
 * @license		https://www.invisioncommunity.com/legal/standards/
 * @package		Invision Community
 * @subpackage	servers
 * @since		10 Sep 2020
 */

namespace IPS\servers\widgets;

/* 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;
}

/**
 * servers Widget
 */
class _servers extends \IPS\Widget
{
	/**
	 * @brief	Widget Key
	 */
	public $key = 'servers';
	
	/**
	 * @brief	App
	 */
	public $app = 'servers';
		
	/**
	 * @brief	Plugin
	 */
	public $plugin = '';
	
	/**
	 * Initialise this widget
	 *
	 * @return void
	 */ 
	public function init()
	{
		// Use this to perform any set up and to assign a template that is not in the following format:
		$this->template( array( \IPS\Theme::i()->getTemplate( 'widgets', $this->app, 'front' ), $this->key ) );
		// If you are creating a plugin, uncomment this line:
		// $this->template( array( \IPS\Theme::i()->getTemplate( 'plugins', 'core', 'global' ), $this->key ) );
		// And then create your template at located at plugins/<your plugin>/dev/html/servers.phtml
		
		
		parent::init();
	}
	
	/**
	 * Specify widget configuration
	 *
	 * @param	null|\IPS\Helpers\Form	$form	Form object
	 * @return	null|\IPS\Helpers\Form
	 */
	public function configuration( &$form=null )
	{
 		$form = parent::configuration( $form );

 		// $form->add( new \IPS\Helpers\Form\XXXX( .... ) );
 		return $form;
 	} 
 	
 	 /**
 	 * Ran before saving widget configuration
 	 *
 	 * @param	array	$values	Values from form
 	 * @return	array
 	 */
 	public function preConfig( $values )
 	{
 		return $values;
 	}

	/**
	 * Render a widget
	 *
	 * @return	string
	 */
	public function render()
	{
		$data = [
			'test'		=> 1,
			'test2'		=> 2,
			'test3'		=> 3,
			'test4'		=> 4,
		];
				
		return \count($data) ? $this->output($data): "";
		
		//return $this->output(  );
		//return 'test';
		// Use $this->output( $foo, $bar ); to return a string generated by the template set in init() or manually added via $widget->template( $callback );
		// Note you MUST route output through $this->output() rather than calling \IPS\Theme::i()->getTemplate() because of the way widgets are cached
	}
}

 

czysty kod z dev center

Edytowane przez X3nO
Odnośnik do komentarza
Udostępnij na innych stronach

public function init()
	{
		// Use this to perform any set up and to assign a template that is not in the following format:
		// $this->template( array( \IPS\Theme::i()->getTemplate( 'widgets', $this->app, 'front' ), $this->key ) );
		// If you are creating a plugin, uncomment this line:
		// $this->template( array( \IPS\Theme::i()->getTemplate( 'plugins', 'core', 'global' ), $this->key ) );
		// And then create your template at located at plugins/<your plugin>/dev/html/servers.phtml
		
		
		parent::init();
	}

masz wyłączone :kappa:

Odnośnik do komentarza
Udostępnij na innych stronach

W php stosunkowo łatwo o memory leak

 

Moja sugestia - usuń templatke z init i zrób tak w render:

 

	$data = [
			'test'		=> 1,
			'test2'		=> 2,
			'test3'		=> 3,
			'test4'		=> 4,
		];
				
		if(is_countable($data)
           return \IPS\Theme::i()->getTemplate( 'widgets', $this->app, 'front' )->$this->key($data));

 

Oczywiście mam nadzieje że masz templatke "servers" gdzieś tam w dev>widgets>front

 

Edytowane przez Bluur
Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager
9 godzin temu, Bluur napisał:

Oczywiście mam nadzieje że masz templatke "servers" gdzieś tam w dev>widgets>front

Też to teraz sprawdzałem. Brak tego, wywala błąd oczywiście, ale ścieżka ma być inna.

dev -> html -> front -> widgets -> servers.phtml

 

Masz tak?

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

Loaded Configuration File:         /usr/local/php73/lib/php.ini

https://pastebin.com/ebzvWUK6

 

Godzinę temu, DawPi napisał:

Też to teraz sprawdzałem. Brak tego, wywala błąd oczywiście, ale ścieżka ma być inna.

dev -> html -> front -> widgets -> servers.phtml

 

Masz tak?

Tak, mam tak

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

I tylko tą apkę masz na forum czy coś więcej? Może się coś gryzie. Sam kod na pewno jest OK. 

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.