Is there a way to use an Action to include a file from the includes folder using logic in the php instead of the template? Im not sure if I can just include the file by reading it into a variable and then having a function to put the contents of the variable on the template. I could do this in normal php code but I was wondering if there were built in methods in the api for doing this?
We've moved the forum!
Please use forum.silverstripe.org for any new questions
(announcement).
The forum archive will stick around, but will be read only.
You can also use our Slack channel
or StackOverflow to ask for help.
Check out our community overview for more options to contribute.
- Page 11(current)
- 2
- Next 10 entries
I'm not sure cause MVC is pretty new to me, i still have a lot of tests to understand this but... you would need to create some kind of function in the page controller. For example:
function IncludeSomeStuff(){
include('file.php');
}
And in your template you do:
$IncludeSomeStuff
And it should output the information. Note that your include file will be in the context of the function so you need to globalize some stuff to access it outside the function or you use $this if it's something you need in the script that is provided by the page_controlller!
Here is something I found in another thread.
It seems that at least at one point it would work to use a statement like this in the ss file.
<% include {$URLSegment}_sidebar %>
however doing this doesn't include the file although the $URLSegment is parsed and replaced. So you end up with <% include bob_sidebar %> in the output. instead of the included file. Does anyone know how to make this syntax work in the ss template files? Or was this functionality removed?
<% include {$URLSegment}_sidebar %>
Won't currently work as the template parser only does 1 sweep - so the on the parse as you have noticed it just parses the $URLSegment. In order to do a sidebar based on url you would have to do it in the PHP or use an <% if URLSegment = blah %><% include blah_sidebar %><% else_if %>......
But surely there must be some way to conditionally include pieces other than such a monstrous method of a hundred 'if' statements, not only cluttering stuff, but making it far more tedious and intransparant to expand your options.
(I don't think inclusion based on url is a good idea, but there are other applications where you'd want to have some global variable determine which file is included.)
I'm having the same problem right now... I have a site with about twelve (and this might increase later on) different sidebars, and I have a Enum-value attached to my pages in the database. And the value is basically a selector for which sidebar the page should use/include, however it won't actually do so.
I suppose the 'if' solution would be workable, but if it can be avoided I'd rather not commit such a sin...
Isn't it somehow possible to parse the variable before it reaches the include, and get it in there in a way that the parses does properly handle the include? Or to just force a second sweep for part of the code? (I don't know much about coding at all, so forgive me if my suggestion/question smacks of ignorance.)
such a monstrous method of a hundred 'if' statements, not only cluttering stuff
Using a switch/case statement in PHP would be faster.
That might work if I just wanted to put in some .php, not for .ss though. Or am I mistaken here?
P.S. So I guess Silverstripe has no way whatsoever of doing this?
No templates do not support case statements so else ifs are the best in the template, though the template is designed to keep lots of the logic like this in the php rather then templates
- Page 11(current)
- 2
- Next 10 entries