[TYPO3-mvc] Cannot cast object oftype"Tx_Extbase_Persistence_QueryResult" to string.

Claus Due claus at wildside.dk
Mon Jun 13 13:20:32 CEST 2011


Hi Johannes,

I've put a few comments in the source below. Hope it helps. The problem could be caused by {teaseritem: teaseritem} in link args - try the teaseritem.uid instead.

--
Med venlig hilsen / Kind regards

Claus Due
Developer
--
Wildside A/S
Katrinebjergvej 113, DK-8200 Århus N
tlf. 86 12 64 65
http://www.wildside.dk

On Jun 13, 2011, at 1:05 PM, Johannes C. Schulz - EnzephaloN IT-Solutions wrote:

> Hi Claus
> 
> Okay, here we have the fluid template:
> 
> <f:layout name="default" />
> 
> This Template is responsible for creating a table of domain objects.
> 
> <f:section name="main">
> <h1>Listing for Teaseritem</h1>
> 
> <f:flashMessages />
> 
> <table>
> 
> <f:if condition="{pagination}==1">
> <enzteaserlist:widget.paginate objects="{teaseritems}" as="teasers"
> configuration="{itemsPerPage: itemsperpage,insertAbove:0,insertBelow:1}">
> </f:if>

CD: These <f:if> could be a problem, although unrelated. They offset the tag rendering stack...

> 	<f:for each="{teasers}" as="teaseritem">
> 		<tr>
> 			<td>
> 				<f:image src="teaseritem.teaserimage"
> alt="teaseritem.title" width="120c" height="120c"></f:image>

CD: These variables should be in curly braces.

> 			</td>
> 			<td>
> 				<f:if condition="{teaseritem.linkdetail}
> ==''">
> 					<f:then>
> 						<f:link.action
> action="showitem" arguments="{teaseritem :
> teaseritem}">{teaseritem.title}</f:link.action>

CD: try this: {teaseritem: teaseritem.uid} - as a precaution.

> 					</f:then>
> 					<f:else>
> 						<f:link.page
> pageUid="{teaseritem.linkdetail}">{teaseritem.title}</f:link.page>
> 					</f:else>
> 				</f:if>
> 			    {teaseritem.shortdescription}
> 			</td>
> 			<td>
> 				{teaseritem.addinfo1}
> 				{teaseritem.addinfo2}
> 				{teaseritem.addinfo3}
> 				{teaseritem.addinfotext}
> 				<f:if condition=" {teaseritem.linkdetail} !=
> ''">
> 					<f:then>
> 						<f:link.page
> pageUid="{teaseritem.linkdetail}"><img src="img/button_detail.png"
> border="0"></f:link.page>
> 					</f:then>
> 					<f:else>
> 						<f:link.action
> action="showitem" arguments="{teaseritem : teaseritem}"><img
> src="img/button_detail.png" border="0"></f:link.action>

CD: try the {teaseritem: teaseritem.uid} here as well.

> 					</f:else>
> 				</f:if>
> 				
> 				<f:if condition=" {teaseritem.linkbooking}
> != ''">
> 					<f:then>
> 						<f:if
> condition="{teaseritem.linkbooking} <= '10000'">
> 							<f:then>
> 								<f:link.page
> pageUid="{teaseritem.linkbooking}"><img src="img/button_booking.png"
> border="0"></f:link.page>
> 							</f:then>
> 							<f:else>
> 	
> <f:link.external uri="{teaseritem.linkbooking}" target="_blank"><img
> src="img/button_booking.png" border="0"></f:link.external>
> 							</f:else>
> 						</f:if>
> 					</f:then>
> 				</f:if>
> 				
> 			</td>
> 		</tr>
> 	</f:for>
> <f:if condition="{pagination}==1">
> </enzteaserlist:widget.paginate>
> </f:if>
> </table>
> </f:section>
> 
> Thanx alot
> 
> 
> -----Ursprüngliche Nachricht-----
> Von: typo3-project-typo3v4mvc-bounces at lists.typo3.org
> [mailto:typo3-project-typo3v4mvc-bounces at lists.typo3.org] Im Auftrag von
> Claus Due
> Gesendet: Montag, 13. Juni 2011 12:50
> An: TYPO3 v4 MVC project
> Betreff: Re: [TYPO3-mvc] Cannot cast object
> oftype"Tx_Extbase_Persistence_QueryResult" to string.
> 
> Hi Johannes,
> 
> It doesn't look like the code below would fail in this way. We probably need
> to see your Fluid template to know the cause... this is possibly caused by a
> misuse of {pages} or {variableNameYouEnteredInAsAttribute} after having
> inserted the paginater...
> 
> --
> Med venlig hilsen / Kind regards
> 
> Claus Due
> Developer
> --
> Wildside A/S
> Katrinebjergvej 113, DK-8200 Århus N
> tlf. 86 12 64 65
> http://www.wildside.dk
> 
> On Jun 13, 2011, at 12:39 PM, Johannes C. Schulz - EnzephaloN IT-Solutions
> wrote:
> 
>> Thanks for the answer.
>> 
>> So it might be possible, that the "stolen" paginate-widget throws the
> error?
>> 
>> <?php
>> /**
>> * Overwrite buildPagination Method
>> Tx_Fluid_ViewHelpers_Widget_Controller_PaginateController
>> *
>> * @author Ralf Hannuschak
>> */
>> class Tx_EnzTeaserlist_ViewHelpers_Widget_Controller_PaginateController
>>  extends Tx_Fluid_ViewHelpers_Widget_Controller_PaginateController {
>> 
>>   	/**
>> 	 * @param integer $currentPage
>> 	 * @return void
>> 	 */
>> 	public function indexAction($currentPage = 1) {
>> 
>>           parent::indexAction($currentPage);
>> 
>>           // set current page
>>           $this->currentPage = (integer)$currentPage;
>> 
>>           // modify query
>>           $itemsPerPage = (integer)$this->configuration['itemsPerPage'];
>>           $query = $this->objects->getQuery();
>>           $query->setLimit($itemsPerPage);
>> 
>>           if ($this->currentPage > 1) {
>>                   $query->setOffset((integer)($itemsPerPage *
>> ($this->currentPage - 1)));
>>           }
>>           $modifiedObjects = $query->execute();
>> 
>>           $this->view->assign('contentArguments', array(
>>                   $this->widgetConfiguration['as'] => $modifiedObjects,
>>                   'current' => $this->currentPage
>>           ));
>> 	}
>> 
>>   /**
>>    * Returns an array with the keys "pages", "current", "numberOfPages",
>> "nextPage" & "previousPage"
>>    *
>>    * @return array
>>    */
>>   protected function buildPagination() {
>> 
>>           $pages = array();
>> 
>>           $displayFirstPage = FALSE;
>> 
>>           $displayLastPage  = FALSE;
>> 
>>           $this->numberOfPages = (int)$this->numberOfPages;
>> 
>>           if($this->numberOfPages > 5) {
>> 
>>               if ( $this->currentPage <=  3 ) { // page 1, 2, 3
>> 
>>                   for($i = 1; $i <= 3; $i++ ) {
>>                       $pages[] = array('number' => $i, 'isCurrent' => (
> $i
>> === $this->currentPage ));
>>                   }
>> 
>>                   if ($this->currentPage == 3 ) $pages[] = array('number'
>> => 4, 'isCurrent' => false);
>> 
>>                   $displayLastPage = TRUE;
>>               } else { // page 4 and more
>> 
>>                   /* check last pages in case of 10 pages current page is
>> page 9
>>                    * should display : 1 ... 8 9 10
>>                    * case page 8
>>                    * should display : 1 ... 7 8 9 10
>>                    */
>>                   if($this->currentPage + 2 >= $this->numberOfPages ) {
>>                       if($this->currentPage + 2 == $this->numberOfPages )
>>                           $pages[] = array('number' =>
>> $this->numberOfPages - 3, 'isCurrent' => false);
>> 
>>                       for($i = $this->numberOfPages - 2; $i <=
>> $this->numberOfPages; $i++ ) {
>>                           $pages[] = array('number' => $i, 'isCurrent' =>
>> ( $i === $this->currentPage) );
>>                       }
>> 
>>                       $displayFirstPage = TRUE;
>>                   } else {
>>                       /* display everything
>>                        * case page 6
>>                        * 1 ... 5 6 7 ... 10
>>                        */
>>                       for($i = $this->currentPage - 1; $i <=
>> $this->currentPage + 1; $i++ ) {
>>                           $pages[] = array('number' => $i, 'isCurrent' =>
>> ($i === $this->currentPage) );
>>                       }
>>                       $displayFirstPage = TRUE;
>>                       $displayLastPage = TRUE;
>>                   }
>>               }
>> 
>>           } else {
>>               if($this->numberOfPages > 1 ) {
>>                   // less then 6 pages so show all pages
>>                   for($i = 1; $i <= $this->numberOfPages; $i++ ) {
>>                       $pages[] = array('number' => $i, 'isCurrent' => ($i
>> === $this->currentPage) );
>>                   }
>>               }
>>           }
>> 
>>           $pagination = array(
>>                   'pages' => $pages,
>>                   'current' => $this->currentPage,
>>                   'numberOfPages' => $this->numberOfPages,
>>                   'displayFirst' => $displayFirstPage,
>>                   'displayLast'  => $displayLastPage
>>           );
>> 
>>           if ($this->currentPage < $this->numberOfPages) {
>>                   $pagination['nextPage'] = $this->currentPage + 1;
>>           }
>> 
>>           if ($this->currentPage > 1) {
>>                   $pagination['previousPage'] = $this->currentPage - 1;
>>           }
>> 
>>           return $pagination;
>>   }
>> 
>> }
>> ?>
>> 
>> 
>> -----Ursprüngliche Nachricht-----
>> Von: typo3-project-typo3v4mvc-bounces at lists.typo3.org
>> [mailto:typo3-project-typo3v4mvc-bounces at lists.typo3.org] Im Auftrag von
>> Claus Due
>> Gesendet: Montag, 13. Juni 2011 11:10
>> An: TYPO3 v4 MVC project
>> Betreff: Re: [TYPO3-mvc] Cannot cast object of
>> type"Tx_Extbase_Persistence_QueryResult" to string.
>> 
>> Hi Johannes,
>> 
>> The function below looks good; the problem must stem from accessing the
>> return value (a QueryResult) directly without iterating or using
>> ->getFirst() - that would cause the error message.
>> 
>> Could this be because of something done in Fluid using that QueryResult?
> If
>> so, it should help if you either iterate the QueryResult or use
>> {queryResult.first} (I believe - can't remember wether the {var.first} is
>> the proper way of getting the first record available from Fluid...
>> 
>> --
>> 
>> Kind regards
>> 
>> Claus Due
>> Developer
>> 
>> --
>> Wildside A/S
>> Katrinebjergvej 113, DK-8200 Århus N
>> tlf. 86 12 64 65
>> http://www.wildside.dk
>> 
>> Wildside er Danmarks mest kreative TYPO3-hus. Vi griber dine behov, 
>> tanker og sjove ideer og skaber unikke kommunikationsløsninger og 
>> websites. Vi tager hånd om hele processen fra idé til færdigt produkt, 
>> og vi hjælper dig, når løsningen går i luften. 
>> 
>> --
>> 
>> Nyt produkt: Open Source webshops baseret på Magento Commerce
>> 
>> http://www.wildside.dk/hvad-kan-vi/magento/
>> 
>> On Jun 13, 2011, at 10:19 AM, Johannes C. Schulz - EnzephaloN IT-Solutions
>> wrote:
>> 
>>> Hi there!
>>> 
>>> 
>>> 
>>> Today I have a problem with the error-message:
>>> 
>>> Cannot cast object of type "Tx_Extbase_Persistence_QueryResult" to
> string.
>>> 
>>> 
>>> 
>>> I think something in my repository is wrong, but I didn't find it:
>>> 
>>> 
>>> 
>>> class Tx_EnzTeaserlist_Domain_Repository_TeaseritemRepository extends
>>> Tx_Extbase_Persistence_Repository {
>>> 
>>> 
>>> 
>>>    public function givemelist($category,$order,$type,$storage){
>>> 
>>>          $orderings = array($type => $order == 'ORDER_ASCENDING' ? 
>>> 
>>> 
>>> Tx_Extbase_Persistence_QueryInterface::ORDER_ASCENDING : 
>>> 
>>> 
>>> Tx_Extbase_Persistence_QueryInterface::ORDER_DESCENDING);
>>> 
>>>          if(!empty($storage)) {
>>> 
>>>                $pid = $storage;
>>> 
>>>          }else{
>>> 
>>>                $pid = t3lib_div::_GP('id');
>>> 
>>>          }
>>> 
>>> 
>>> 
>>>          $query = $this->createQuery();
>>> 
>>> 
>>> 
>>>                $pidsearch = array();
>>> 
>>>                if (!is_array($pid)) {
>>> 
>>>                      $pidsearch =
>>> $query->logicalOr(array($query->equals('teaseritem.pid',$pid)));
>>> 
>>>                }
>>> 
>>>                else {
>>> 
>>>                      $pidsearch =
>>> $query->logicalOr(array($query->in('teaseritem.pid',$pid)));
>>> 
>>>                }
>>> 
>>> 
>>> 
>>>      if(!empty($pidsearch))
>>> $query->matching($query->logicalAnd($pidsearch));
>>> 
>>>    $query->setOrderings($orderings);
>>> 
>>>    return $query->execute();
>>> 
>>>    }
>>> 
>>> }
>>> 
>>> 
>>> 
>>> Can somebody help me please?
>>> 
>>> 
>>> 
>>> Best regards
>>> 
>>> Johannes
>>> 
>>> _______________________________________________
>>> TYPO3-project-typo3v4mvc mailing list
>>> TYPO3-project-typo3v4mvc at lists.typo3.org
>>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-project-typo3v4mvc
>> 
>> _______________________________________________
>> TYPO3-project-typo3v4mvc mailing list
>> TYPO3-project-typo3v4mvc at lists.typo3.org
>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-project-typo3v4mvc
>> 
>> 
>> _______________________________________________
>> TYPO3-project-typo3v4mvc mailing list
>> TYPO3-project-typo3v4mvc at lists.typo3.org
>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-project-typo3v4mvc
> 
> _______________________________________________
> TYPO3-project-typo3v4mvc mailing list
> TYPO3-project-typo3v4mvc at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-project-typo3v4mvc
> 
> 
> _______________________________________________
> TYPO3-project-typo3v4mvc mailing list
> TYPO3-project-typo3v4mvc at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-project-typo3v4mvc



More information about the TYPO3-project-typo3v4mvc mailing list