Jump to content

Object of class IPS\Member could not be converted to string - Node


 Share

Go to solution Solved by DawPi,

Recommended Posts

Hej,

Piszę swoją pierwszą apkę na IPS i napotkałem jeden problem. Po stworzeniu Node i inputa form, który pozwala dodać kilku użytkowników do bazy danych.

/**
   * [Node] Add/Edit Form
   *
   * @param	\IPS\Helpers\Form	$form	The form
   * @return	void
   */
  public function form(&$form)
  {
    $members = array();
    if (!empty($this->axenserverlist_owners)) {
      foreach (new \IPS\Patterns\ActiveRecordIterator(\IPS\Db::i()->select('*', 'core_members', array(\IPS\Db::i()->in('member_id', explode(",", $this->axenserverlist_owners)))), 'IPS\Member') as $member) {
        $members[] = $member;
      }
    }

    $form->add(new \IPS\Helpers\Form\Member('axenserverlist_owners', $members, FALSE, array('multiple' => null)));
  }

Przy zapisaniu rekordu wyskakuje mi błąd: Object of class IPS\Member could not be converted to string.

 

Szukałem co mogło powodować ten błąd, ale dokumentacji milczy (jak zawsze).
Kolumna axenserverlist_owners ma typ varchar max 100.

Link to comment
Share on other sites

Nie mam, ponieważ:

Cytat

When the form is saved, any fields which match columns in the database table will be set automatically.

https://invisioncommunity.com/developers/docs/fundamentals/nodes/working-with-node-models-r28/

 

Ale chyba najwidoczniej jest potrzebny dla tego pola, tylko nie wiem jak ten błąd mam w tym zapisie opanować.

Link to comment
Share on other sites

  • Manager
  • Solution

I to się wszystko zgadza, ale dla "prostych" typów danych. Ty tu używasz:

2 godziny temu, aXen napisał:

\IPS\Helpers\Form\Member

Więc przy zapisywaniu dostajesz obiekt, a nie np. ciąg znaków. Trzeba to skonwertować na możliwy zapis do stringa, co dostałeś w komunikacie błędu:

2 godziny temu, aXen napisał:

Przy zapisaniu rekordu wyskakuje mi błąd: Object of class IPS\Member could not be converted to string.

I sam nadałeś nawet taki typ:

2 godziny temu, aXen napisał:

Kolumna axenserverlist_owners ma typ varchar max 100.

A jako, że dodajesz wiele userów w to pole więc musisz dać coś takiego (przeładować tę metodę):

	/**
	 * [Node] Format form values from add/edit form for save
	 *
	 * @param	array	$values	Values from the form
	 * @return	array
	 */
	public function formatFormValues( $values )
	{
		if( !empty( $values['axenserverlist_owners'] ) )
		{
			$members = array();
			foreach ( $values['axenserverlist_owners'] as $member )
			{
				$members[] = $member->member_id;
			}
			$values['axenserverlist_owners'] = implode( ',', $members );
		}
		else
		{
			$values['axenserverlist_owners'] = NULL;
			$values['axenserverlist_owners'] = 'all';
		}
        
		return $values;
	}

 

  • Thanks 1

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Link to comment
Share on other sites

  • Manager

Problem ROZWIĄZANY. Jeśli są jakiekolwiek wątpliwości, pytania proszę o założenie nowego tematu.

Wszelkie uzasadnione reklamacje/pretensje/sugestie/rady przyjmuje ekipa forum.

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

  • 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.