[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