Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

Template Questions

Passing $URLSegment to PageController?


Reply

5 Posts   3843 Views

Avatar
me.yay

18 February 2010 at 10:02pm (Last edited: 18 February 2010 10:02pm), Community Member, 14 Posts

Hi,

i am kind of desperate.. I am unsing a Gallery and want do determine the filenames for the Images based on the $URLSegment.
The Pictures are located inside /themes/path/img/gallery and are named like the matching $URLSegment's with trailing numbers. The images are uploaded straight in the folder and not proccessed as assets.

My first approach was to pass $URLSegment within the control, which failed:
page.ss:

<% control GalleryImages($URLSegment) %>
$Imagename
<% end_control %>

Then i found in the docs that $URLSegment should be an accessible variable inside the Page_Controller class (and subclasses).
This is my next approach:

page.php:

   function GalleryImages(){
   
      $path = "../themes/path/img/gallery";
      $filetypes = array("jpg", "png", "gif");
      
      $files = new array();
      $handle=opendir ($path);
      while ($file = readdir ($handle)) {
       if (strlen($file) >= strlen($URLSegment)) {
         // filename starts with URLSegment?
          $matchfile= strpos($file, $URLSegment,0 ) === 0;
            // filename matches filetypes?
            foreach ($filetypes as $filetype){
               $matchfiletype=substr_compare($file, $filetype, ((int) strlen($filetype) * -1)) === 0;
               if ($matchfiletype && $matchfile) {
                  $files[] = array('Image' => $file);
               }
            }
         }
      }
      closedir($handle);
      return new DataObjectSet($files);
   }

What am i doing wrong? And how can i determin the current URLSegment inside the controller?

Kind Regards
Metin

Avatar
Willr

18 February 2010 at 10:45pm Forum Moderator, 5511 Posts

how can i determin the current URLSegment inside the controller?

$this->URLSegment will return the controllers URL segment

Avatar
me.yay

19 February 2010 at 12:26am (Last edited: 19 February 2010 12:26am), Community Member, 14 Posts

Thanks for the quick hint Willr!

It works like a charm :)

Avatar
merrick_sd

10 July 2014 at 11:24pm Community Member, 95 Posts

I tried to make a quick enquiry widget.

The widget is on a page for example: http://mydomain/groups/cardiff

After saving the data and email i want to redirect to the same page.
however

$myredirector = Director::baseURL().Director::get_current_page()->URLSegment.'/?success=1';

Director::redirect($myredirector);
is returning

/cardiff/?success=1

i have tried
$myredirector = Director::baseURL(). $this->Link() . "/?success=1"
which returned
//groups/cardiff/widget/59/?success=1

i don't want the widget/59

Avatar
Devlin

10 July 2014 at 11:35pm (Last edited: 10 July 2014 11:36pm), Community Member, 215 Posts

$myredirector = Director::get_current_page()->Link() . "?success=1";
// groups/cardiff/?success=1