Search

Hello everyone.

If you have time and a cup of coffee, I'd be grateful if you read my post and give some answers to this newbie here. If you don't have that much time, but still have the good heart to help me out, please just check out my questions at the bottom...

Like a lot of people here, I'm a man with a great idea. This idea should give birth to an amazing site that unites people, brings them together organizing stuff about their lives, helps them share in social networks, etc, etc.

Two years ago I set this idea in motion and decided to deploy it as a Joomla plug-in. Why? Because:

  1. It seemed like a sane object-oriented cms, and I liked its MVC approach (I'm a programmer)
  2. It provided good APIs for MySQL (My site requires a fancy relational database and lots of sql magic)
  3. It came with a convenient back-end, and lots of components (menus, user permission levels and roles, security, etc...) that would make my life easier.
  4. When done, people could just install Joomla, download my plug-in, and voila!

However, two things changed my cool project forever: (1) I ditched the "download-my-plugin" approach and decided to create a full-fledged web application people could go to instead, and (2) consequently, worried a bit more about its presentation and usability.

So I ditched most of Joomla's high-level scaffolding and tried to use its essential components to create my application. I designed a functional template using the latest version of Bootstrap, included the latest jQuery libs, and started my site.

Nightmares ensued.

To start with, Joomla kept on insisting on injecting its own code, and although I understand that I should be doing things "their way" (code wise and presentation wise) I was sick of having to comply with every pre-made decision about how things should look/run. Second, I realized that I don't really need all those back-end features, as long as I had a few essential things, and third, in spite of their robust and complete framework, I find myself writing most of the code for the system myself. I might as well get some bare-bones framework like CodeIgniter and do it all from semi-scratch.

But I've been a developer for a long time, I have a life, and I'm not about to re-invent the wheel.

I tried other CSMs like Drupal, and I HATED it. No straight forward object-oriented support, bad coding everywhere, utter lack of elegance, and a lot of hidden assumptions (don't get me wrong, it is great for what it does, just not to create a well integrated web application)

So Symphony seemed like a good alternative. I hear that it:

  1. Is well designed
  2. Is based on PHP and MySQL
  3. Is a lightweight framework that allows you to create any kind of site

So, to make a long story short, good and experienced users of this forum, this is what I'd like to ask you today:

  1. Is Symphony still a good framework choice if instead of using its "Sections-and-fields" approach I want to use my own MySQL tables? I'm assuming I would still use its DataSources philosophy, if possible.
  2. Is it really, really flexible when it comes to the presentation of data? Can I roll my very own bootstrap-and-jQuery based templates to show the information to the user? I've got some fancy interaction widgets in mind, and I must support mobile and tablet devices :o)
  3. How about things like Ajax? Is the events framework an equivalent system?
  4. What would be a good place to start if, instead of using what comes out of the box, I want to migrate my previous system (Model-View-Controller based) into Symphony and see how things look? Am I asking the wrong question here and should I picture my system under a different paradigm?
  5. And finally, does it sound like I'm missing an obvious orientation article already written here? In that case, I apologize for the long post, and would really be grateful if you could point me to it.

Thanks a lot for your time and help! Specially if you made it this far down my lengthy post.

Hi there!

A few answers for you :)

  1. No. Try and think of Sections and Fields as a pseudo-database structure. The actual database is highly normalised, so is difficult to get the hang of, and so the Sections act as a kind of database structure, where you can model data using the wide range of available field types. Datasources hook into this to output filtered data from these sections.
  2. The beauty of XSLT is that you can output content in any way from the XML. I've used it to output CSV through to complex JavaScript programs. Obviously it's best at HTML and XML, but that goes without saying.
  3. The events system allows you to receive data from the frontend, and with a little PHP knowledge, you can manipulate it to present data to the frontend, or add data into sections.
  4. Symphony isn't an MVC framework, and isn't a framework at all. Although it has a learning curve, once you understood the basics, the sky is the limit with what you can achieve. To migrate your existing work would mean rebuilding it in Symphony's way I'm afraid.
  5. We have a deficiency in documentation I'm afraid, and we're working on that as I write, but we have the Learn section of this site to peruse.

I hope this helps.

Hi, just a small addition to @designermonkey

  1. Whilst it's possible (I do have some custom table/queries/datasources) having everything custom goes a bit against the principle and you would lose some of the benefits of using Symphony in the first place.

Symphony basically abstracts away the database. You setup your structure with sections and fields, query your data with datasources and manipulate it from the frontend with events.

Except of this part, everything else should be very well suited for your needs. Symphony doesn't output any HTML, CSS or JavaScript at all, so the frontend is completely up to you.

Data is presented to you as XML and transformed to whatever format you like via XSLT, be it another XML structure like an atom feed, a JSON string, an HTML page or a simple text file.

Thanks for the responses! I'm going to give this a try. After all, I can certainly use sections and fields to replace my database structure, as long as I can still keep relationships between them to make Datasources relational.

You can keep the relationships; by using Select Box Link or other relational fields. Then to pull data from different sections you would have to use what is called datasource chaining basically taking the outputs of a datasource and feeding them into the next one.

Create an account or sign in to comment.

Symphony • Open Source XSLT CMS

Server Requirements

  • PHP 5.3-5.6 or 7.0-7.3
  • PHP's LibXML module, with the XSLT extension enabled (--with-xsl)
  • MySQL 5.5 or above
  • An Apache or Litespeed webserver
  • Apache's mod_rewrite module or equivalent

Compatible Hosts

Sign in

Login details