External Forms for 5.7

Hi all,

I am trying to learn how to implement custom forms in my sites and as someone who is quite inexperienced with PHP, I was hoping someone could share a basic, working, email contact external form that I can work through, customise and try to gain a better understanding of what is happening.

I have tried using the sample external form however I never seem to get anywhere, I seem to learn better by picking apart something that workings, seeing what breaks it and working from there.

Any help would be greatly appreciated.


View Replies:
linuxoid replied on at Permalink Reply
Do you want to write your own form package or you just need a contact form on your site?

Have a look at this package FYI:https://www.concrete5.org/marketplace/addons/loginlogout-link...
mobius2000 replied on at Permalink Reply
Hi Linuxoid,

Thanks for the suggestion... I am in fact trying to make up some custom contact forms with jquery step plugin (wizard type forms) and some other forms that have calculation functions in it.

I know how to achieve this in straight HTML however implementing it into Concrete5 5.7 is confusing me so I think the external forms block is my best option but I can't seem to get my head around creating it.

Although a great suggestion, I don't think this is what I am after.
linuxoid replied on at Permalink Reply
I do recommend you have a look at the Login package. To me, it's one of the simplest blocks to start with, while the External Form is totally useless and confusing.

I felt the same with C5 and MVC some time ago too. So, what helped me was to realize the following basic stuff (in non-programmer language):

1. the view.php file has the presentation code - how it will show in a browser
2. the controller.php has the form processing and other code - it takes data from view.php, does something with it and outputs other data back to view.php

For, example:
<?php echo $form->label("name", $entry_name, array ('class'=>"required")); ?>
<?php echo $form->text('name', $name, array ('maxlength'=>"40"")); ?>

See the two variable $entry_name and $name? Now, the controller:
use \Concrete\Core\Block\BlockController;
class Controller extends BlockController {
    public $name = '';
    public $entry_name = 'Name:';
    public function view() {
        $this->set('entry_name', $this->entry_name);
   if (isset($this->name)) {
      $this->set('name', $this->name);
   } else {
      $this->set('name', '');

You can style your block with a view.css and have JS code in a view.js in the same block folder together with your view.php and controller.php files.

Now you can take it from here...

PS. Also have a look at these: