Hi Matt,

I like this solution much better than directly building the html in your code (albeit the html in your example is still technically in your code, it's easy enough to break it apart in production).

I've not considered handling state via the controller although have seen other frameworks such as StateMachine::Gestiana (written by the author of the Uttu framework), which I think employ this method. You may want to check into how state is handled in these modules.

Bear in mind that in your examples the state is still being set via an html form parameter. This parameter can therefore be overridden by the user when the form is submitted. You'll need to rethink your solution if you want to enforce the sequence. My solution is to check the form data at the beginning of each runmode using CGI::Application::ValidateRM. I can return the user to a previous state if they have not submitted valid/required information.

In any case, I think that you ought to document this technique at the CGI App wiki. It looks like a viable alternative to manually setting the next state.

Regards,
William


In reply to Re: Re: CGI::Application next run mode buttons? by knowmad
in thread CGI::Application next run mode buttons? by Solo

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.