Benny's Blog
Navigation: Home » Archives for Controller
8. September 2010

Wer zum Zend Framework – MVC Tutorial noch eine Ergänzung braucht, der findet sie im nachfolgenden Video. Speziell wird nochmal auf die Übergabe von Parametern und Werten eingegangen sowie auf die Bedeutung des Index -und Error-Controllers.

Zend Framework – MVC Tutorial Ergänzung:

2. September 2010

Meine Tutorials zum Zend Framework gehen weiter. Diesmal erkläre ich das Prinzip von Model, View und Controller (MVC). Dabei wird das Entwurfsmuster der Inversion of Control (IoC) vorgestellt.

Zend Framework – MVC Tutorial:

20. August 2010

Im Zend Framework kann die Verwendung von Binnenmajuskeln (engl. “Camel Case”) auf Linux-System zu Problemen führen. Wenn ein Controller z.B. “FirmenSucheController.php” heißt und versucht wird diese Webseite über “/firmensuche” aufzurufen, dann kommt es zur Fehlermeldung: “Invalid controller specified“.

Eine Umbenennung der Datei in “FirmensucheController.php” löst dieses Problem. Dateinamen für Zend-Controller sollten daher nur einen Großbuchstaben für das erste Zeichen des Dateinamens sowie für das “C” in “Controller” besitzen. Im Namen der PHP-Klasse selbst dürfen Binnenmajuskel verwendet werden.

19. November 2009

View.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import java.util.Observable;
import java.util.Observer;
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
 
public class View implements Observer
{	// MVC Instances
	private Controller	controller;
	private Model		model;
 
	// Further local variables...
	private JButton button;
 
	// Initialization constructor
    public View(Model model)
    {
    	this.model = model;
    	this.model.addObserver(this);
    	this.controller = new Controller(this,model);
    	initGUI();
    }
 
    // Initialization of Frame and GUI Elements
    private void initGUI()
    {
    	// Frame
	        JFrame frame = new JFrame("Application Titlebar Name");
 
	        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	        frame.setBounds(180,180,400,300);
	        frame.setLayout(null);
	        frame.setResizable(false);
	        frame.setVisible(true);
 
	    // Other GUI Elements...
	        button = new JButton("I'm a Button!");
	        button.setBounds(10,10,200,50);
	        button.setActionCommand("fromButton");
	        button.addActionListener(controller);
 
	        frame.add(button);
    }
 
    // Start the GUI in an Event-Dispatching-Thread
    public static void main(String args [])
    {
        SwingUtilities.invokeLater(new Runnable()
            {
            public void run()
                {
                new View(new Model());
                }
            });
    }
 
    // Setter for the button text
    public void setButtonText(String text)
    {
    	this.button.setText(text);
    }
 
    @Override
    // Event-Handling
    public void update(Observable arg0, Object eventCommand)
    {
        if (eventCommand.equals("done"))
        {
        	if(model.getButtonState())
        		setButtonText("I'm happy :)");
        	else
        		setButtonText("I'm sad :(");
        }
    }
}

Controller.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
public class Controller implements ActionListener
{
	// Local variables
	private View	view;
	private Model	model;
 
    public Controller(View view, Model model)
    {
    	super();
    	this.view	= view;
    	this.model	= model;
    }
 
	@Override
	public void actionPerformed(ActionEvent action)
	{
		if( action.getActionCommand().equals("fromButton") &&
		    !model.getButtonState() )
				model.setButtonState(true);
		else
				model.setButtonState(false);
	}
}

Model.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.util.Observable;
 
public class Model extends Observable
{
	// Private variable(s)
	boolean buttonState;
 
	// Default constructor
    public Model()
    {
    	super();
    	this.buttonState = false;
    }
 
    // Setter for the button state
    public void setButtonState(boolean state)
    {
    	this.buttonState = state;
 
        this.setChanged();
        this.notifyObservers("done");
    }
 
    // Getter for the actual button state
    public boolean getButtonState()
    {
    	return this.buttonState;
    }
}