7

I'm developing a mobile web app with Laravel 4 and jQuery Mobile and I have some problems to pass data from Controller to JavaScript file. I find a solution but I think there is a proper way to do that.

Here is my code:

MapController.php

class MapController extends BaseController 
{
    public function showMap($id)
    {
        $club = Club::find($id);
        return View::make('pages.map', array('club' => $club));
    }
}

pages/map.php

<div id="picture" data-role="dialog">
  <div data-role="header" data-theme="d">
    <h1>
      Upload picture
    </h1>
  </div>
  <div data-role="content">
    code here...
  </div>

  <script type="text/javascript">
    var id_club = '<?php echo $club->id ?>';
  </script>
  <script src="public/js/map.js" type="text/javascript">
  </script>
</div>

Does anyone know if there is a better solution to pass data from controller to JavaScript?

1
  • 1
    Better way is to request it by AJAX via JSON. Or add hidden input and get it from there. Commented Jun 18, 2013 at 18:25

2 Answers 2

11

Use this package https://github.com/laracasts/PHP-Vars-To-Js-Transformer

public function index()
{
    JavaScript::put([
        'foo' => 'bar',
        'user' => User::first(),
        'age' => 29
    ]);

    return View::make('hello');
}
Sign up to request clarification or add additional context in comments.

2 Comments

Can we send an object or an array with it ?
Yes we can send anything to the view from a controller using this package.
8

HTML

<input type="hidden" id="club-id" value="<?php echo $club->id ?>" />

Javascript

var club_id = $('#club-id').val().trim();

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.