Jump to content

Hosting dHosting.pl - 1015% rabat! Zwiększamy rabat!

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


Recommended Posts

Witam, w nowym widgecie dodałem 

public function render()
{
	return $this->output( );
}

i problem mam taki, że nie wyświetla mi się błąd o np. niestworzonym pliku czy braku headerów a image.thumb.png.e8c5209948b8148bc02a4d1d9372e80f.png

dodam, że widget się wyświetla gdy zwracam tekst

return "test";

 

Link to post
Share on other sites

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

Link to post
Share on other sites

W init() masz podać ścieżkę.

$this->template( array( \IPS\Theme::i()->getTemplate( 'widgets', 'core', 'front' ), $this->key ) );


Albo w render()

 

return \IPS\Theme::i()->getTemplate( 'widgets', 'core', 'front' );

 

Link to post
Share on other sites
<?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

Edited by X3nO
Link to post
Share on other sites
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:

Link to post
Share on other sites

Dodam, że jak dodam jakikolwiek kod w render to wyrzuca ten blad, chciałem zrobić prostą pętle foreach

foreach(\IPS\Db::i()->select('*', 'clients_data') as $row)
{
	$data .= $row['points'];
}

 

Link to post
Share on other sites

Dziwne, spróbuj stworzyć nowy widget, tylko żeby miał inną nazwę. Miałem podobną sytuację przy tworzeniu frontu, class'y miałem podobne, lub niezgodne z ich nazwami.

Link to post
Share on other sites

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

 

Edited by Bluur
Link to post
Share on other sites
  • 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.

Link to post
Share on other sites
  • 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.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.